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

一.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解析,

猜你喜欢

转载自blog.51cto.com/13501268/2129213