几种常用的JSON解析工具的使用

目录

简介:

引入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类库:

几种常用的JSON解析工具的使用_第1张图片

org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,这篇文章将介绍org.json的使用。

JSONObject:普通json对象

JSONArray:json数组

 

引入maven依赖:

(实测最好将jar包下载下来,然后手动导入工程)

<dependency>

    <groupId>org.jsongroupId>

    <artifactId>jsonartifactId>

    <version>20171018version>

dependency>

使用:

这里只简单测试一下JSON的基本生成与解析,复杂的类型与之同理,这里不过多介绍。

JSON入门(1)之org.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);

    }

 

    /**

     * JSONObjectJSONArray的相互嵌套

     */

    @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}

 

    }

}

JSON入门(2)之net.sf.json的使用

<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);

    }

}

 

JSON入门(3)之json.simple的使用

<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);

 

    }

}

 

JSON入门(4)之gjson的使用

<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);

    }

}

 

JSON入门(5)之jackson的使用

<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);

 

       /**

        * ObjectMapperJSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现。

        * ObjectMapper有多个JSON序列化的方法,可以把JSON字符串保存FileOutputStream等不同的介质中。

        * 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);

    }

}

 

JSON入门(6)之fastjson的使用

<dependency>

    <groupId>com.alibabagroupId>

    <artifactId>fastjsonartifactId>

    <version>1.2.42version>

dependency>

 

方法入口:

public static final Object parse(String text); // JSON文本parseJSONObject或者JSONArray

    public static final JSONObject parseObject(String text); // JSON文本parseJSONObject   

    public static final T parseObject(String text, Class clazz); // JSON文本parseJavaBean

    public static final JSONArray parseArray(String text); // JSON文本parseJSONArray

    public static final List parseArray(String text, Class clazz); //JSON文本parseJavaBean集合

    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 list = JSON.parseArray(json_array, Person.class);

       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);

    }

}

 

 

你可能感兴趣的:(工具类)