一.JSON简介:
1.JSON(javaScript Object Notation)是一种轻量级的数据交换格式;
2.JSON数据作为目前网络中主流的数据传输格式之一,应用十分广泛;
3.JSON可以表示的数据:
(1)对象:对象表示为”{}”扩起来的内容,数据结构为{key:value,key:value,....}的键值对的结构
例如:
{“name”:”zhangsan”,”age”:20}
(2)数组:数组表示为中括号” [ ]”括起来的内容,数据结构为[value,value,value,.........]或[{key:value,...},{key:value,...}]的单值结构
例如:
[{“name”:”zhangsan”,”age”:20},{“name”:”wangwu”,”age”:25}]
即:

    {
“user”:
[
{“name”:”zhangsan”,”age”:20},
{“name”:”wangwu”,”age”:25}
]
}

二.JSON的官方解析
1.把装配好的JavaBean转换成JSON数据格式

Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,

2.把JSON转化成JavaBean对象

Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,

3.把集合转化为JSON字符串

Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,

4.把数组形式的JSON字符串转化为集合对象

Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,

例1(JSON官方解析):
(1)先引入所需jar包
(2)编写代码:
转化工具类(包含了4中转换的方法):

package org.json.official;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.bean.Student;

public class OfficeJSONUtil {

    // 1.将java对象转换成JSON数据格式
    public static String javaToJSON() {
        Student stu = new Student(1, "王昭君", 89.5);
        JSONObject jsonObj = new JSONObject(stu);
        return jsonObj.toString();
    }

    // 2.将JSON转化为JavaBean对象
    public static Student jsonToJavaBean() {
        Student stu = null;
        String jsonStr = "{'id':2,'name':'杨玉环','score':95.6}";
        try {
            JSONObject jsonObj = new JSONObject(jsonStr);
            int id = jsonObj.optInt("id");
            String name = jsonObj.optString("name");
            double score = jsonObj.optDouble("score");
            stu = new Student(id, name, score);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return stu;
    }

    // 3. 把集合转化为JSON字符串
    public static String listToJSON() {
        List<Student> list = new ArrayList<Student>();
        Collections.addAll(list, new Student(3, "西施", 93.6), new Student(4,
                "貂蝉", 95.3), new Student(5, "平昭阳公主", 94.6));
        JSONArray jsonArr = new JSONArray(list);
        return jsonArr.toString();

    }

    // 4.把数组形式的JSON串转化为集合对象
    public static List<Student> jsonArrayToList() {
        List<Student> list = new ArrayList<Student>();
        String jsonStr ="[{\"score\":93.6,\"name\":\"西施\",\"id\":3},{\"score\":95.3,\"name\":\"貂蝉\",\"id\":4},{\"score\":94.6,\"name\":\"平昭阳公主\",\"id\":5}]";
        try {
            JSONArray jsonArr=new JSONArray(jsonStr);
            for(int i=0;i<jsonArr.length();i++){
                JSONObject jsonObj=jsonArr.optJSONObject(i); //用于获取每一个对象
                int id=jsonObj.optInt("id");
                String name=jsonObj.optString("name");
                double score=jsonObj.optDouble("score");
                Student stu=new Student(id,name,score);
                list.add(stu);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return list;

    }
}

测试代码(主方法):

package org.json.official;

import java.util.List;
import org.json.bean.Student;

public class TestOfJson {

    public static void main(String[] args) {
        //1.JavaBean转化为JSON数据格式
        String jsonStr= OfficeJSONUtil.javaToJSON();
        System.out.println("1.JavaBean转化为JSON数据格式:"+jsonStr);

        // 2.将JSON转化为JavaBean对象
        Student stu=OfficeJSONUtil.jsonToJavaBean();
        System.out.println("2.将JSON转化为JavaBean对象:"+stu);

        // 3. 把集合转化为JSON字符串
        String jsonStr1=OfficeJSONUtil.listToJSON();
        System.out.println("3. 把集合转化为JSON字符串:"+jsonStr1);

        //4.把数组形式的JSON串转化为集合对象
        List<Student> list=OfficeJSONUtil.jsonArrayToList();
        System.out.println("4.把数组形式的JSON串转化为集合对象:");
        for(Student stu1:list){
            System.out.println(stu1);
        }
    }

}

运行结果:
Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,

三.使用GSON(Google第三方包)解析JSON
首先实例化GSON对象:

Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,
1.把Java对象转化为JSON
Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,

2.把JSON转化为Java对象

Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,
3.把集合类型的Java对象转换成JSON
Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,

4.把JSON转换成集合类型的Java集合对象

Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,

例2(使用GSON解析JSON):
(1)引入第三方jar包
(2)编写代码:
解析工具类(包含四种转换方法):

package org.json.gson;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.json.bean.Student;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class GSONUtilt {
    private static Gson gson = new Gson();// 实例化Gson对象

    // 1.将javaBean转换成JSON格式
    public static String javaBeanToJSON() {
        Student stu = new Student(9, "钟无艳", 69.7);
        String jsonStr = gson.toJson(stu);
        return jsonStr;
    }

    // 2.将JSON转化为Java对象
    public static Student jsonToJavaBean() {
        Student stu = gson.fromJson(
                "{\"id\":10,\"name\":\"武则天\",\"score\":94.7}", Student.class);
        return stu;
    }

    //3.把集合类型的Java对象转换成JSON
    public static String listToJSON(){
        List<Student> list=new ArrayList<Student>();
        Collections.addAll(list, new Student(3, "西施", 93.6), new Student(4,
                "貂蝉", 95.3), new Student(5, "平昭阳公主", 94.6));
        return gson.toJson(list);

    }

    //4.把JSON转换成集合类型的Java集合对象
    public static List<Student> jsonToList(){
        String jsonStr="[{\"id\":20,\"name\":\"郭靖\",\"score\":60.5},{\"id\":21,\"name\":\"黄蓉\",\"score\":65.5}]";
        return gson.fromJson(jsonStr, new TypeToken<List<Student>>(){}.getType());

    }
}

测试类(主方法):

package org.json.gson;

import java.util.List;
import org.json.bean.Student;

public class testGoJson {

    public static void main(String[] args) {
        // 1.将javaBean转换成JSON格式
        String jsonStr= GSONUtilt.javaBeanToJSON();
        System.out.println("1.将javaBean转换成JSON格式"+jsonStr);

        // 2.将JSON转化为Java对象
        Student stu= GSONUtilt.jsonToJavaBean();
        System.out.println("2.将JSON转化为Java对象"+stu);

        //3.把集合类型的Java对象转换成JSON
        String jsonStr1= GSONUtilt.listToJSON();
        System.out.println("3.把集合类型的Java对象转换成JSON"+jsonStr1);

        //4.把JSON转换成集合类型的Java集合对象
        System.out.println("4.把JSON转换成集合类型的Java集合对象");
        List<Student> list=GSONUtilt.jsonToList();
        for(Student stu1:list){
            System.out.println(stu1);
        }
    }

}

运行结果:

Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,

四.FsatJSON(阿里巴巴第三方包)解析JSON
1.把Javabean转换成JSON

2.把JSON转换成Javabean

3.把集合对象转换成JSON

4.把数组形式的JSON转换成集合对象

例3(利用FastJSON解析JSON):
(1)引入相应的jar包
(2)编写代码:
接析工具类(包含四种类型转换的方法):

package org.json.fastjson;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.json.bean.Student;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

public class FastJSONUtil {

    // 1.把Javabean转换成JSON
    public static String javaBeanToJSON() {
        Student stu = new Student(11, "虞姬", 96.8);
        return JSON.toJSONString(stu);

    }

    // 2.把JSON转换成Javabean
    public static Student jsonToJavaBean() {
        String jsonStr = "{'id':2,'name':'杨玉环','score':95.6}";
        return JSON.parseObject(jsonStr, Student.class);
    }

    // 3.把集合对象转换成JSON
    public static String listToJSON() {
        List<Student> list = new ArrayList<Student>();
        Collections.addAll(list, new Student(3, "西施", 93.6), new Student(4,
                "貂蝉", 95.3), new Student(5, "平昭阳公主", 94.6));
        return JSON.toJSONString(list);

    }

    // 4.把数组形式的JSON转换成集合对象
    public static List<Student> jsonToList() {
        String JSONStr = "[{\"id\":20,\"name\":\"郭靖\",\"score\":60.5},{\"id\":21,\"name\":\"黄蓉\",\"score\":65.5}]";
        return JSON.parseObject(JSONStr, new TypeReference<List<Student>>() {
        });

    }

}

测试类(主方法):

package org.json.fastjson;

import java.util.List;

import org.json.bean.Student;

public class TestFastJSON {

    public static void main(String[] args) {

        // 1.把Javabean转换成JSON
        String jsonStr= FastJSONUtil.javaBeanToJSON();
        System.out.println("1.把Javabean转换成JSON:"+jsonStr);

        // 2.把JSON转换成Javabean
        Student stu=FastJSONUtil.jsonToJavaBean();
        System.out.println("2.把JSON转换成Javabean:"+stu);

        // 3.把集合对象转换成JSON
        String jsonArrStr=FastJSONUtil.listToJSON();
        System.out.println("3.把集合对象转换成JSON:"+jsonArrStr);

        // 4.把数组形式的JSON转换成集合对象
        System.out.println("4.把数组形式的JSON转换成集合对象:");
        List<Student> list=FastJSONUtil.jsonToList();
        for(Student stu1:list){
            System.out.println(stu1);
        }
    }

}

运行结果:

Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,