目录
简介:
引入maven依赖:
使用:
JSON入门(1)之org.json的使用
JSON入门(2)之net.sf.json的使用
JSON入门(3)之json.simple的使用
JSON入门(4)之gjson的使用
JSON入门(5)之jackson的使用
JSON入门(6)之fastjson的使用
现在越来越多的网站采用JSON来交换数据,在Json.org网站上,Java可以使用的解析Json的组件就有超过20种。
Json官网:http://json.org/
页面往下拉,可以看到java板块的json类库:
org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,这篇文章将介绍org.json的使用。
JSONObject:普通json对象
JSONArray:json数组
(实测最好将jar包下载下来,然后手动导入工程)
<dependency> <groupId>org.jsongroupId> <artifactId>jsonartifactId> <version>20171018version> dependency> |
这里只简单测试一下JSON的基本生成与解析,复杂的类型与之同理,这里不过多介绍。
package com.zzs.json;
import org.json.JSONArray; import org.json.JSONObject; import org.junit.Test;
/** * java原生json处理 */ public class OrgJsonTest {
/** * JSON的初始化 */ @Test public void test1() { JSONObject jsonObject = new JSONObject(); jsonObject.put("name", "zhangsan"); jsonObject.put("age", 20); jsonObject.put("married", false); System.out.println(jsonObject); // {"name":"zhangsan","married":false,"age":20}
JSONArray jsonArray = new JSONArray(); jsonArray.put(0, true); jsonArray.put(1, "lisi"); jsonArray.put(2, 22); System.out.println(jsonArray); // [true,"lisi",22] }
/** * JSON的解析 */ @Test public void test2() { // 初始化 JSONObject jsonObject = new JSONObject("{\"name\":\"zhangsan\",\"married\":false,\"age\":20}"); JSONArray jsonArray = new JSONArray("[true,\"lisi\",22]");
String name = jsonObject.getString("name"); int age = jsonObject.getInt("age"); boolean married = jsonObject.getBoolean("married"); System.out.println("name=" + name + "\nage=" + age + "\nmarried=" + married); // name=zhangsan // age=20 // married=false
boolean arr1 = jsonArray.getBoolean(0); String arr2 = jsonArray.getString(1); int arr3 = jsonArray.getInt(2); System.out.println(arr1 + "\t" + arr2 + "\t" + arr3); }
/** * JSONObject和JSONArray的相互嵌套 */ @Test public void test3() { // 初始化 JSONObject jsonObject = new JSONObject("{\"name\":\"zhangsan\",\"married\":false,\"age\":20}"); JSONObject address = new JSONObject("{\"address\":\"China\"}"); JSONArray education = new JSONArray("[\"小学\",\"初中\",\"高中\"]");
jsonObject.put("addr", address); jsonObject.put("edu", education); System.out.println(jsonObject); // {"edu":["小学","初中","高中"],"name":"zhangsan","addr":{"address":"China"},"married":false,"age":20}
} } |
<dependency> <groupId>net.sf.json-libgroupId> <artifactId>json-libartifactId> <version>2.4version> dependency> <dependency> <groupId>net.sf.ezmorphgroupId> <artifactId>ezmorphartifactId> <version>1.0.6version> dependency> |
import org.junit.Test;
import net.sf.json.JSONArray; import net.sf.json.JSONObject;
public class NetsfJSON {
/** * 创建JSON */ @Test public void test1() { String str = "{\"name\":\"zhangsan\",\"age\":20}"; JSONObject json1 = JSONObject.fromObject(str); System.out.println(json1.toString());
JSONObject json2 = new JSONObject(); json2.put("name", "zhnagsan"); json2.put("age", 20); json2.element("telphone", "15000000000"); System.out.println(json2); } /** * 解析JSON */ @Test public void test2() { String str = "{\"name\":\"zhangsan\",\"age\":20}"; JSONObject json = JSONObject.fromObject(str); String name = json.getString("name"); int age = json.getInt("age"); System.out.println("name = " + name + ", age = " + age); } /** * JSONArray */ @Test public void test3() { // JSONObject内嵌JSONArray JSONObject json = new JSONObject(); json.put("name", "zhnagsan"); json.put("age", 20);
JSONObject json3 = new JSONObject(); json3.put("math", 90); json3.put("english", 88); JSONArray array = new JSONArray(); array.add(json3);
json.put("class", array); System.out.println(json);
JSONArray jsonArray = json.getJSONArray("class"); System.out.println(jsonArray.toString());
// 创建JSONArray JSONArray jsonArray2 = new JSONArray(); jsonArray2.add(0, "zhangsan"); jsonArray2.add(1, "lisi"); jsonArray2.element(2, "wangwu"); System.out.println(jsonArray2);
// 解析 Object object = jsonArray2.get(0); System.out.println(object); } } |
<dependency> <groupId>com.googlecode.json-simplegroupId> <artifactId>json-simpleartifactId> <version>1.1.1version> dependency> |
import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import org.junit.Test;
public class JSONSimple { @Test public void test1() throws ParseException { // 创建 JSONObject obj = new JSONObject(); obj.put("name", "zhangsan"); obj.put("age", 20); obj.put("tel", "15000000000"); System.out.println(obj);
// 解析 JSONParser parser = new JSONParser(); JSONObject json = (JSONObject) parser.parse(obj.toString()); System.out.println(json);
Object name = json.get("name"); Object age = json.get("age"); System.out.println("name = " + name + ", age = " + age);
} } |
<dependency> <groupId>com.google.code.gsongroupId> <artifactId>gsonartifactId> <version>2.8.2version> dependency> |
public class Person { private String name; private int age; } |
import org.junit.Test; import com.google.gson.Gson;
public class GSONTest { @Test public void test() { Gson gson = new Gson();
Person person = new Person(); person.setName("zhangsan"); person.setAge(20);
String json = gson.toJson(person); // {"name":"zhangsan","age":20} System.out.println(json); Person fromJson = gson.fromJson(json, Person.class); // Person [name=zhangsan, age=20] System.out.println(fromJson); } } |
<dependency> <groupId>com.fasterxml.jackson.coregroupId> <artifactId>jackson-coreartifactId> <version>2.9.2version> dependency> <dependency> <groupId>com.fasterxml.jackson.coregroupId> <artifactId>jackson-databindartifactId> <version>2.9.2version> dependency> <dependency> <groupId>com.fasterxml.jackson.coregroupId> <artifactId>jackson-annotationsartifactId> <version>2.9.2version> dependency> |
import com.fasterxml.jackson.databind.ObjectMapper; import com.zzs.json.bean.Person;
public class JacksonTest { @Test public void test1() throws IOException { Person person = new Person(); person.setName("zhangsan"); person.setAge(20);
/** * ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现。 * ObjectMapper有多个JSON序列化的方法,可以把JSON字符串保存File、OutputStream等不同的介质中。 * writeValue(File arg0, Object arg1)把arg1转成json序列,并保存到arg0文件中。 * writeValue(OutputStream arg0, Object arg1)把arg1转成json序列,并保存到arg0输出流中。 * writeValueAsBytes(Object arg0)把arg0转成json序列,并把结果输出成字节数组。 * writeValueAsString(Object arg0)把arg0转成json序列,并把结果输出成字符串。 */ ObjectMapper mapper = new ObjectMapper();
// User类转JSON String json = mapper.writeValueAsString(person); // 输出结果:{"name":"zhangsan","age":20} System.out.println(json);
// JSON解析 Person readValue = mapper.readValue(json, Person.class); // 输出结果:Person [name=zhangsan, age=20] System.out.println(readValue); } } |
<dependency> <groupId>com.alibabagroupId> <artifactId>fastjsonartifactId> <version>1.2.42version> dependency> |
方法入口: public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject public static final public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 public static final Object toJSON(Object javaObject); // 将JavaBean转换为JSONObject或者JSONArray。
|
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject;
public class FastjsonTest { /** * 创建JSON */ @Test public void test1() { // 创建一个 Person 对象 Person person = new Person(); person.setName("zhangsan"); person.setAge(20); // 将 Person 对象转为 json 字符串 String json = JSON.toJSONString(person); // 输出结果:{"age":20,"name":"zhangsan"} System.out.println(json);
// 将 Person 对象转为 json 字符串, 这个字符串是经过格式化的 String format_json = JSON.toJSONString(person, true); System.out.println(format_json); }
@Test public void test2() { String json_array = "[{\"age\":20,\"name\":\"zhangsan\"},{\"age\":22,\"name\":\"lisi\"}]"; // 将 json 字符串转为 JSONArray 对象 JSONArray array = JSON.parseArray(json_array); System.out.println(array);
// 将 json 字符串转为 List 集合 List for (Person person : list) { System.out.println(person); } }
/** * JSON解析 */ @Test public void test3() { String json = "{\"age\":20,\"name\":\"zhangsan\"}"; // 将 json 字符串转为 JSONObject 对象 JSONObject object = JSON.parseObject(json); System.out.println(object);
// 将 json 字符串转为 Student 对象 Person person = JSON.parseObject(json, Person.class); System.out.println(person); } } |