ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JSON解析

2021-06-18 23:05:11  阅读:174  来源: 互联网

标签:20 对象 json JSON 解析 Gson 1001


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);
    }

标签:20,对象,json,JSON,解析,Gson,1001
来源: https://blog.csdn.net/m0_50039735/article/details/118035194

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有