如何将字符串转换为 JSON,反之亦然

原文:https://www.studytonight.com/java-examples/how-to-convert-string-to-json-and-vice-versa

在本教程中,我们将学习如何将字符串转换为 JSON,反之亦然。首先,什么是 JSON?

JSON 是 JavaScript 对象符号的缩写。它是不同网络服务之间的轻量级数据传输格式。它主要用于构建 API。

JSON 示例

这是 JSON 的一个例子,它以键值格式存储数据,值可以是另一个原始数据类型或另一个 JSON 的数组。

myJSON = {
"course":"Java",
"price":8000,
"duration":"3 Months"
};

在 Java 中,有三种方法可以将 JSON 转换为字符串,反之亦然

  • 使用 JSON 库

  • 使用 Gson 库

  • 使用 Jaskson 图书馆

在运行包含这些库的程序时,我们需要下载这些 jar 文件,并根据 ide 将它们添加到项目中,否则这些库中的函数将不支持并导致错误。您可以参考以下链接来下载这些库

下载 org.json.jar

下载 gson-2 . 2 . jar

下载 org.codehaus.jackson.jar

让我们借助例子一个一个看。

示例 JSON 库

在下面给出的代码中,我们有一个以字符串形式存储的JSON 数据。转换一个字符串JSON 执行多个动作非常方便。JSONObject 是一个将字符串转换为JSON 对象的org.json包类。

import org.json.JSONException;
import org.json.JSONObject;
public class StudyTonight 
{
    public static void main(String[] args)
    {
        String myJSON ="{\"name\":\"studytonight\",\"address\":\"Noida\"}";  
        try
        {
            JSONObject jsonObject = new JSONObject(myJSON);
            System.out.println("JSON Object: "+jsonObject);
        }
        catch (JSONException e)
        {
            System.out.println("Error "+e.toString());
        } 
    }
}

JSON 对象:{“地址”:“Noida”,“姓名”:“今晚学习”}

JSON 库示例:JSON 到字符串

在上面的代码中,我们学习了如何将字符串转换为 JSON 对象,现在我们可以将 JSON 对象转换为字符串,我们还将学习从头开始创建对象。首先,我们将创建一个 JSON 对象并添加值。这个类有一个 JSONObject.put()方法,它接受两个参数键和值。

import org.json.JSONObject;
public class StudyTonight 
{
    public static void main(String[] args)
    {
        //Creating a JSON Object
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", "studytonight");
        jsonObject.put("address", "Noida");
        //Converting JSON Object using toString() method
        String myJSONString = jsonObject.toString();
        System.out.println("JSON String: "+myJSONString);
    }
}

JSON 字符串:{“地址”:“Noida”,“姓名”:“今晚学习”}

GSON 库示例

无论我们在上面的代码块中做了哪两件事,我们都将使用 Gson 库做同样的事情。这个库是谷歌开发的,在业内广泛使用。JsonParser 是负责解析字符串的类,parse()是接受字符串的方法。最后,我们使用getAsJsonObject()以 JsonObject 格式获取上述所有转换。

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class StudyTonight 
{
    public static void main(String[] args)
    {
        //JSON String
        String myJSON ="{\"name\":\"studytonight\",\"address\":\"Noida\"}";  
        //JSON Parser from Gson Library
        JsonParser parser = new JsonParser();
        //Creating JSONObject from String using parser
        JsonObject JSONObject = parser.parse(myJSON).getAsJsonObject();
        System.out.println("Object: "+JSONObject);
    }
}

对象:{“姓名”:“今晚学习”、“地址”:“Noida”}

示例 GSON 库:JSON 到字符串

为了在com.google.gson内部创建 JSON 对象,我们使用 JSON 对象类和方法addPropety()。addProperty()将接受两个参数,即将要添加到 JSON 对象中的键和值。

import com.google.gson.JsonObject;
public class StudyTonight 
{
    public static void main(String[] args)
    {
        //Creating Json Object
        JsonObject JSONObject = new JsonObject();
        JSONObject.addProperty("name", "studytonight");
        JSONObject.addProperty("address", "Noida");        
        //Converting Json Object to String
        String myJSON = JSONObject.toString();        
        System.out.println("String: "+myJSON);
    }
}

字符串:{“姓名”:“今晚学习”、“地址”:“Noida”}

Jaskson 图书馆示例

Jackson 是一个库,在使用 JSON 时提供了很大的灵活性。我们需要从 ObjectMapper 类创建一个映射器,然后我们从一个映射器创建一个 JsonFactory 类对象,并调用该映射器来创建一个解析器,最后这个解析器将使用readTree()方法为我们实际创建 JSON 对象。readTree() 将接受解析器对象,并跟踪 JSON 的层次结构。

import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.map.ObjectMapper;
public class StudyTonight 
{
    public static void main(String[] args)
    {
        //JSON String
        String myJSON ="{\"name\":\"studytonight\",\"address\":\"Noida\"}";  
        ObjectMapper mapper = new ObjectMapper();
        JsonFactory factory = mapper.getJsonFactory();
        try
        {
            JsonParser parser = factory.createJsonParser(myJSON);        
            JsonNode actualObj = mapper.readTree(parser);       
            System.out.println("Object: "+actualObj); 
        }
        catch(Exception e)
        {
            System.out.println("Error: "+e.toString()); 
        }
    }
}

对象:{“姓名”:“今晚学习”、“地址”:“Noida”}

示例 Jaskson 库:JSON 到字符串

为了从 Json 对象创建 String,Jaskson 库在ObjectMapper 类中提供了writeValueAsString()方法。该值接受 JSON 对象并返回字符串。

import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.node.ObjectNode;

public class StudyTonight 
{
    public static void main(String[] args)
    {
        ObjectMapper mapper = new ObjectMapper();
        // create a JSON object
        ObjectNode JSONObject = mapper.createObjectNode();
        JSONObject.put("name", "studytonight");
        JSONObject.put("address", "Noida");
        try
        {
            //Json object to String
            String JSONString = mapper.writeValueAsString(JSONObject);
            System.out.println("String: "+JSONString);
        }
        catch(Exception e)
        {
            System.out.println("Error "+e);
        }
    }
}

字符串:{“姓名”:“今晚学习”、“地址”:“Noida”}

结论:

JSON 是 JavaScript 对象符号,它非常适合构建像 RESTful APIs 这样的网络服务。我们使用jsongsonJackson 库将 JSON 转换为 String,并将 String 转换为 JSON。