JSON解析

JSON解析

一、什么是JSON

和XML没什么区别,都是用作数据的交互,但在与浏览器的交互中通常都用JSON,也可以用XML,不过JS对JSON的支持好很多,并且 JSON字符串比XML文档显得干净些、体积更小。

二、语法

{}:表示对象

[]:表示数组

三、解析方式

1、Gson解析

Gson:是一个简单的基于Java的库,用于将Java对象序列化为JSON,也可以把JSON转换为Java对象。它是Google开发的开源库。

为什么使用Gson:

  • 标准化:Gson是由Google管理的标准化库。
  • 高效:对Java标准库的可靠,快速和有效的扩展。
  • 优化:库已高度优化。
  • 支持泛型:为泛型提供广泛的支持。
  • 支持复杂的内部类:它支持具有深继承层次结构的复杂对象。

Gson的特点:

  • 易于使用:Gson API提供了一个高级外观,以简化常用用例。
  • 无需创建映射:Gson API为要序列化的大多数对象提供了默认映射。
  • 性能:Gson相当快并且内存占用少。它适用于大型对象或系统。
  • 干净的JSON:Gson创建了干净且紧凑的JSON结果,易于阅读。
  • 无依赖关系:除JDK之外,Gson库不需要任何其他库。
  • 开源:Gson库是开源的;它是免费提供的。

Gson的使用:

  • 【注意】:本人测试用的都是测试类,如果没有学过将方法换成main方法即可,效果一样

如果是maven工程,引入坐标即可

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.5</version>
</dependency>

如果是普通的java项目,导入jar包即可

gson-2.8.5.jar

①将Java对象转为JSON

 /**
     * 将对象转为json
     */
    @Test
    void test1() {
        //创建student对象
        Student stu = new Student("1001","张三",20);
        //创建Gson对象
        Gson gson = new Gson();
        //将对象转为json
        String json = gson.toJson(stu);
        //{"id":"1001","name":"张三","age":20}
        System.out.println(json);
    }

②将JSON转换为Java对象

/**
     * 将json转为对象
     */
    @Test
    void test2() {
        //创建Gson对象
        Gson gson = new Gson();
        //将json转为对象
        Student student = gson.fromJson("{\"id\":\"1001\",\"name\":\"张三\",\"age\":20}", Student.class);
        //Student(id=1001, name=张三, age=20)
        System.out.println(student);
    }

③有特殊格式的JSON数据转为集合

/**
     * json中有特殊格式的数据
     * {"id":"1001","name":"张三","age":20,"num":["一二三","二三四","四五六"]}
     */
    @Test
    void test3() {
        //创建Gson对象
        Gson gson = new Gson();
        //将json转为map集合
        Map map = gson.fromJson("{\"id\":\"1001\",\"name\":\"张三\",\"age\":20,\"num\":[\"一二三\",\"二三四\",\"四五六\"]}", Map.class);
        //类型是集合 class java.util.ArrayList
        System.out.println(map.get("num").getClass());
        //[一二三, 二三四, 四五六]
        System.out.println(map.get("num"));
    }

2、FastJSON解析

FastJson是阿里巴巴的的开源库,也是用于对JSON格式的数据进行解析和打包。

特点:

  • 能够支持将java bean序列化成JSON字符串,也能够将JSON字符串反序列化成Java bean。
  • 速度快。
  • 无其他包的依赖。
  • 使用比较方便。

FastJson的使用:

如果是maven工程,引入坐标即可

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.73</version>
</dependency>

如果是java工程,导入jar包即可

fastjson-1.2.73.jar

①将对象转为JSON

/**
     * 将对象转为json
     */
    @Test
    void test1() {
        //创建student对象
        Student stu = new Student("1001","张三",20);
        //将对象转为json
        String jsonString = JSON.toJSONString(stu);
        //{"age":20,"id":"1001","name":"张三"}
        System.out.println(jsonString);
    }

②将JSON转为对象

/**
     * 将json转为对象
     */
    @Test
    void test2() {
        //将json转为对象
        Student stu = JSON.parseObject("{\"age\":20,\"id\":\"1001\",\"name\":\"张三\"}", Student.class);
        //Student(id=1001, name=张三, age=20)
        System.out.println(stu);
    }

③将JSON转为集合

 /**
     * 将json转为集合
     */
    @Test
    void test3() {
        //将json格式的数组转为集合
        List<String> list = JSON.parseArray("[\"一二三\",\"二三四\",\"四五六\"]", String.class);
        //[一二三, 二三四, 四五六]
        System.out.println(list);
    }
上一篇:1001 害死人不偿命的(3n+1)猜想 (15 分)


下一篇:微信小程序服务范围重大更新