Java中JSON处理工具类使用详解
什么是JSON
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。JSON格式常用于服务端和客户端之间的数据传输。
为什么使用JSON
- JSON格式数据包含在HTTP数据包中比XML更小,传输速度更快。
- AJAX应用中,客户端统一管理JSON对象,JSON对象转换为JavaScript对象,简洁高效。
- RESTful架构的web service可以使用JSON作为数据格式,JSON代表了web2.0以来的潮流和趋势,解析速度比XML快。
Java中常用的JSON处理工具类
在Java中我们可以使用多种JSON处理工具包来处理JSON模式的数据,其中常用的有以下几种:
- org.json
- com.google.gson
- net.sf.json
- Jackson
在本文中将详细介绍org.json和com.google.gson两种JSON处理工具的使用。
org.json的使用
org.json是Java语言中最基本的JSON处理工具之一,它提供的API简单易用且无需任何第三方依赖。要使用org.json,只需要在项目中加入两个jar包:json.jar 和 jsontest.jar。
1. org.json的JSONObject类
org.json的JSONObject类表示JSON类型的一个对象。可以通过以下方式创建一个JSONObject对象:
JSONObject object = new JSONObject();
我们也可以根据一个JSON格式的字符串来创建一个JSONObject对象:
String jsonString = "{\"name\":\"张三\",\"age\":20}";
JSONObject object = new JSONObject(jsonString);
此时我们已经创建了一个JSONObject对象,并且在该对象中设置了一个名称为name,值为张三的属性,一个名称为age,值为20的属性。
2. org.json的JSONArray类
org.json的JSONArray类表示JSON类型的一个数组。可以通过以下方式创建一个JSONArray对象:
JSONArray array = new JSONArray();
我们也可以根据一个JSON格式的字符串来创建一个JSONArray对象:
String jsonArray = "[\"apple\",\"banana\",\"orange\"]";
JSONArray array = new JSONArray(jsonArray);
此时我们已经创建了一个JSONArray对象,并且在该对象中设置了三个元素,分别是apple、banana、orange。
3. org.json的JSONArray与JSONObject互转
我们可以通过JSONObject中的put方法向一个JSONObject对象中添加一个JSONArray类型的属性:
JSONObject object = new JSONObject();
JSONArray array = new JSONArray();
array.put("apple");
array.put("banana");
array.put("orange");
object.put("fruit", array);
通过以上代码,我们在JSONObject对象中添加了一个fruit属性,它的值是一个JSONArray类型,其中包含了三个字符串:apple、banana、orange。
我们也可以通过JSONArray的构造器来创建一个JSONArray对象,并在其中包含多个JSONObject对象:
JSONArray array = new JSONArray();
JSONObject object1 = new JSONObject();
object1.put("name", "张三");
object1.put("age", 20);
array.put(object1);
JSONObject object2 = new JSONObject();
object2.put("name", "李四");
object2.put("age", 23);
array.put(object2);
通过以上代码,我们已经创建了一个包含两个JSONObject的JSONArray对象。
4. org.json的JSON格式化
org.json提供了JSONArray和JSONObject的toString方法来将JSONArray和JSONObject对象转换成JSON格式的字符串。同时,org.json也提供了一个优化的JSON格式化器。
JSONObject object = new JSONObject();
JSONArray array = new JSONArray();
array.put("apple");
array.put("banana");
array.put("orange");
object.put("fruit", array);
System.out.println(object);
以上代码输出结果如下:
{"fruit":["apple","banana","orange"]}
通过上述代码可以看出,json对象被自动格式化为带缩进的json字符串。
com.google.gson的使用
com.google.gson是Google出品的Java语言中比较流行的JSON处理工具之一,它使用注解和反射机制,让Java对象与JSON对象之间可以自动映射,简化了开发人员的工作复杂度。
1. com.google.gson的JsonParser类
com.google.gson的JsonParser类用于将JSON格式字符串转换为JsonElement对象。JsonElement是一个基类,可以代表一个JSON对象或JSON数组。
String jsonString = "{\"name\":\"张三\",\"age\":20}";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonString);
以上代码将JSON格式字符串转换成了JsonElement对象。
2. com.google.gson的JsonArray对象
com.google.gson的JsonArray类表示JSON类型的一个数组。可以通过以下方式创建一个JsonArray对象:
JsonArray array = new JsonArray();
我们也可以根据JSON格式字符串来创建一个JsonArray对象:
String jsonArray = "[\"apple\",\"banana\",\"orange\"]";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonArray);
JsonArray array = element.getAsJsonArray();
此时我们已经创建了一个JsonArray对象,并且在该对象中设置了三个元素,分别是apple、banana、orange。
3. com.google.gson的JsonObject对象
com.google.gson的JsonObject表示JSON类型的一个对象。可以通过以下方式创建一个JsonObject对象:
JsonObject object = new JsonObject();
我们也可以根据JSON格式字符串来创建一个JsonObject对象:
String jsonString = "{\"name\":\"张三\",\"age\":20}";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonString);
JsonObject object = element.getAsJsonObject();
此时我们已经创建了一个JsonObject对象,并且在该对象中设置了一个名称为name,值为张三的属性,一个名称为age,值为20的属性。
4. com.google.gson的JSON格式化
com.google.gson提供了GsonBuilder类用于创建Gson对象,并提供了toJson方法将Java对象转换为JSON格式字符串。
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonObject object = new JsonObject();
JsonArray array = new JsonArray();
array.add("apple");
array.add("banana");
array.add("orange");
object.add("fruit", array);
System.out.println(gson.toJson(object));
以上代码输出结果如下:
{
"fruit": [
"apple",
"banana",
"orange"
]
}
总结
本文详细介绍了Java中org.json和com.google.gson两种JSON处理工具的使用及其原理,也介绍了JSON格式的优势和常用的类型。在实际开发中,开发人员可以选择适用的JSON处理工具进行开发,以便在数据交换和解析上取得更好的效果。
示例说明
以下是org.json和com.google.gson两种JSON处理工具的使用示例:
org.json示例
//创建JSONObject对象
JSONObject object = new JSONObject();
object.put("name", "张三");
object.put("age", 20);
System.out.println(object.toString());
//创建JSONArray对象
JSONArray array = new JSONArray();
array.put("apple");
array.put("banana");
array.put("orange");
System.out.println(array.toString());
//JSONArray和JSONObject互相转换
JSONObject object1 = new JSONObject();
object1.put("name", "张三");
object1.put("age", 20);
JSONObject object2 = new JSONObject();
object2.put("name", "李四");
object2.put("age", 21);
JSONArray array = new JSONArray();
array.put(object1);
array.put(object2);
System.out.println(array.toString());
//JSON格式化
JSONObject object = new JSONObject();
JSONArray array = new JSONArray();
array.put("apple");
array.put("banana");
array.put("orange");
object.put("fruit", array);
System.out.println(object);
com.google.gson示例
//JsonParser的使用
String jsonString = "{\"name\":\"张三\",\"age\":20}";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonString);
System.out.println(element.getAsJsonObject());
//JsonArray的使用
String jsonArray = "[\"apple\",\"banana\",\"orange\"]";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonArray);
JsonArray array = element.getAsJsonArray();
System.out.println(array.toString());
//JsonObject的使用
String jsonString = "{\"name\":\"张三\",\"age\":20}";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonString);
JsonObject object = element.getAsJsonObject();
System.out.println(object.toString());
//JSON格式化
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonObject object = new JsonObject();
JsonArray array = new JsonArray();
array.add("apple");
array.add("banana");
array.add("orange");
object.add("fruit", array);
System.out.println(gson.toJson(object));
通过以上示例,我们可以清晰的了解了org.json和com.google.gson的使用方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中JSON处理工具类使用详解 - Python技术站