JSON学习小结

1.概述

        Javascript Object Notation
        是一种轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由【属性值】或者【序列性的值】组成的【数据对象】。尽管【JSON】是【JavaScript】的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯

{
	"firstName":"Tom",
	"lastName":"Smith",
	"sex":"male",
	"age":23,
	"married":false,
	"address":
	{
		"streetAddress":" 21 2nd Street",
		"city":"NewYork",
		"state":"NY",
		"postalCode":"1001"
	},
	"phoneNumber":
	[
		{
			"type":"home",
			"number":"158 8888 8888"
		},
		{
			"type":"fax",
			"number":"158 6666 6666"
		}
	]
}

2. 数据格式

        JSON对象
        JSON对象数组

2.1 JSON对象

{
	"ID":001,
	"name":"大力",
	"age":24
}

特征:
        1.数据形式——键值对形式
        2.数据支持 字符串、数字、true false
        3.{ } 大括号以内的数据

2.2 JSON对象数组

[
	{
		"ID":1,
		"name":"张三",
		"age":20
	},
	{
		"ID":2,
		"name":"李四",
		"age":22
	},
	{
		"ID":3,
		"name":"王五",
		"age":25
	}
]

特征:
        1.数据使用 [ ] 包含
        2.在 [ ] 都是JSON格式对象
        3.每一个对象之间使用都好隔开,但最后一个元素不需要加逗号

2.3 JSON数据验证

JSON格式验证

3.解析JSON格式工具

常用的工具:
        Gson、fastjson、Jackson
        以上都是第三方工具,需要导入对应的jar包
        XML导包

3.1 FastJson内容

JSON核心类
        JSON核心类提供解析和转化方法,用于解析JSON数据格式,同时用于转换类对象到JSON格式,该类对象需要符合JavaBean规范
        - - | JSONArray
                存在按照【键值对方式】解析获取数据,同时存在一定的List方法
        - - | JSONObject
                获取对应的类对象【指定键值对】对应数据的方法

3.2解析演示

/*
完成一个符合JavaBean规范的类
*/
public class Student {
	private String name;
	private Integer age;
	//这里根据需要完成对应的Setter和getter方法
}
package *****;//包名

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import jdk.nashorn.internal.ir.CallNode;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Anonymous
 * @description FastJson演示
 * @date 2020/3/9 16:34
 */
public class Demo1 {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        Student stu = new Student("张伟", 16);
        list.add(stu);
        list.add(new Student("大力", 26));
        list.add(new Student("海棠", 28));
        list.add(new Student("美嘉", 33));
        list.add(new Student("子乔", 35));

        /*
        JavaBean List ==> Json String
        */
        String s = JSON.toJSONString(list);
        System.out.println(s);

        System.out.println("--------------------------------------");

        /*
        JavaBean Student类对象 ==> Json String
         */
        String s1 = JSON.toJSONString(stu);
        System.out.println(s1);

        /*
        Json String == Java Bean Student
         */
        Student student = JSON.parseObject(s1, Student.class);
        System.out.println(student);


        /*
        Json String ==> Json Object
         */
        JSONObject jsonObject = JSON.parseObject(s1);
        String name = jsonObject.getString("name");
        System.out.println(name);
        System.out.println(jsonObject.getInteger("age"));

        /*
        Json String ==> JsonArray
         */
        JSONArray objects = JSON.parseArray(s);
        System.out.println(objects);

        for (Object object : objects) {
            JSONObject jsonObject1 = (JSONObject) object;

            System.out.println(jsonObject1.getString("name"));
            System.out.println(jsonObject1.getInteger("age"));
        }


        Student object = objects.getObject(2, Student.class);
        System.out.println(object);

        System.out.println("--------------------------------------");
        /*
        JSONArray ==> JavaBean List集合
         */
        List<Student> students = objects.toJavaList(Student.class);
        for (Student student1 : students) {
            System.out.println(student1);
        }

        // StudentMangaer ==> ArrayList ==> JSONString ==> 文件
        // 文件 ==> 程序 ==> JSONString ==> JSONArray ==> ArrayList

        System.out.println("--------------------------------------");
    }
}
发布了22 篇原创文章 · 获赞 36 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41986648/article/details/104779298