JSON解析基础使用知识

JSON格式

假设我们定义一本书
一本书有他的书名和内容,那么JSON数据如下

{
	"name":"诗经",
	"info":"中国古代诗歌开端,最早的一部诗歌总集"
}
  • 一个对象由一个大括号表示,括号中通过键值对的方式来描述对象的属性。
  • 键值之间使用冒号连接、多个键值对之间使用逗号分隔,
  • 键值对的键应使用引号包含(如果不使用引号,Java解析时通常会报错,但JS不会)
  • 键值对的值可以是JS中任意类型数据

Gson

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

1、先创建一个类

构造方法、toString()、get()、set()等省略,免得太长

public class Book {
    //基本信息
    private String id;
    private String name;
    private String info;
}

2、将类转换为JSON格式

public class Demo1 {
    public static void main(String[] args) {
        //1. 创建一个Gson对象
        Gson g = new Gson();
        //2. 创建一个Book对象
        Book b = new Book("99","诗经","中国古代诗歌开端");
        //3. 通过toJson方法转换
        String s = g.toJson(b);
        //4. 输出验证
        System.out.println(s);

        Book b1 = new Book("100","聊斋","蒲松龄创作的文言短篇小说集");
        String s1 = new Gson().toJson(b1);
        System.out.println(s1);
    }
}

输出得到结果

java json注册 java创建json对象并赋值_JSON

3、将JSON格式转换为Book对象

public class Demo3 {
    public static void main(String[] args) {
        //1. 创建Gson对象
        Gson g = new Gson();
        //2. 通过fromJson方法将目标JSON格式字符串转换为Book对象
        Book b = g.fromJson("{\"id\":\"99\",\"name\":\"诗经\",\"info\":\"中国古代诗歌开端\"}",Book.class);
        Book b1 = g.fromJson("{\"id\":\"100\",\"name\":\"聊斋\",\"info\":\"蒲松龄创作的文言短篇小说集\"}",Book.class);
        //3. 输出诗经id,聊斋名字验证
        System.out.println(b.getId());
        System.out.println(b1.getName());
    }
}

输出得到结果

java json注册 java创建json对象并赋值_System_02

4、将JSON转换为Map

public class Demo2 {
    public static void main(String[] args) {
        //1.    创建Gson对象
        Gson g = new Gson();
        //2.    转换  :  {"id":"100","name":"诗经","info":"中国古代诗歌开端","page":["如月之恒","如日之升"]}
        //以HashMap为对象
        HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"诗经\",\"info\":\"中国古代诗歌开端\",\"page\":[\"如月之恒\",\"如日之升\"]}", HashMap.class);
        //3. 用list集合接收page
        List page = (List) data.get("page");
        //4. 输出验证
        System.out.println(page.get(1));
    }
}

输出的结果

java json注册 java创建json对象并赋值_json_03

FastJson

还是使用上面创建的Book对象

1、将类转换为JSON格式

public class Demo2 {
    public static void main(String[] args) {
        Book book = new Book("98","兰亭集序","流觞曲水,列坐其次");
        //1. 导入com.alibaba.fastjson.JSON后转换直接使用其中的toJSONString方法
        String s = JSON.toJSONString(book);
        //2. 输出验证
        System.out.println(s);
    }
}

输出得到结果

java json注册 java创建json对象并赋值_json_04

2、将JSON格式转换为Book对象

public class Demo2 {
    public static void main(String[] args) {
        //通过parseObject方法直接转换成Book
        Book book = JSON.parseObject("{\"id\":\"98\",\"info\":\"流觞曲水,列坐其次\",\"name\":\"兰亭集序\"}",Book.class);
        System.out.println(book.getId());
    }
}

输出结果验证

java json注册 java创建json对象并赋值_java_05

3、将JSON转换为数组

public class Demo4 {
    public static void main(String[] args) {
        //1. 转换数组:["流觞曲水","列坐其次","兰亭集序"]
        List<String> strings = JSON.parseArray("[\"流觞曲水\",\"列坐其次\",\"兰亭集序\"]", String.class);
        System.out.println(strings.get(0));
    }
}

输出验证

java json注册 java创建json对象并赋值_java_06


谢谢你的观看