如何将字符串转换为 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 将它们添加到项目中,否则这些库中的函数将不支持并导致错误。您可以参考以下链接来下载这些库
让我们借助例子一个一个看。
示例 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 这样的网络服务。我们使用json
、gson
和Jackson
库将 JSON 转换为 String,并将 String 转换为 JSON。