json的Java解析

目录

JSON简介

  • JSON: JavaScript Object Notation JS对象简谱,是一种轻量级的数据交换格式

样例

{
  "persons": [
    {
      "person": {
        "name": "张三",
        "age": 18,
        "hobby": [
          "游泳",
          "音乐"
        ]
      }
    },
    {
      "person": {
        "name": "李四",
        "age": 20
      }
    }
  ]
}

对象格式

一个对象,由一个大括号表示
括号中 描述对象的属性与函数,通过键值对来描述对象的属性函数
格式:
键与值之间使用冒号连接, 多个键值对之间使用逗号分隔
键值对的应使用引号包围(JS中,不加引号可以解析,但Java会报错)
键值对的,可以是JS中的任意类型的数据

数组格式

使用中括号表示数组
在JSON格式中可以与对象互相嵌套
[元素1,元素2…]


Java解析JSON

常用的解析工具有两个:fastjson、gson
以上两种都需要引入第三方jar包,使用简便

  • 设置教师类,用于测试JSON相关解析
public class Teacher {
    private String id;// 序号
    private String name;// 姓名
    private int age;// 年龄
    private String[] subjects;// 任课科目
	
	// 为缩减篇幅,构造器、getter/setter、toString等方法不展示
}

fastjson

  • 引入jar包,本文使用的是包为:fastjson-1.2.70.jar
  • 需自行下载jar包,或使用目前最新的maven依赖
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.76</version>
</dependency>

对象转json

// 新建对象
Teacher t = new Teacher("123", "张三", 48, new String[]{"数学", "地理", "历史"});
// 解析为JSON字符串
String json = JSON.toJSONString(t);
// 输出JSON字符串
System.out.println(json);

执行结果:{“age”:48,“id”:“123”,“name”:“张三”,“subjects”:[“数学”,“地理”,“历史”]}

json转对象

// json字符串
String json = "{\"age\":48,\"id\":\"123\",\"name\":\"张三\",\"subjects\":[\"数学\",\"地理\",\"历史\"]}";
// json字符串转为对象
Teacher teacher = JSON.parseObject(json, Teacher.class);
// 输出
System.out.println(teacher);

执行结果:Teacher{id=‘123’, name=‘张三’, age=48, subjects=[数学, 地理, 历史]}

  • fastjson的使用很简单,通过方法名就能理解并使用
  • 下面是将字符串转为JSON对象的方法
// 将json字符串转为JSONObject
// JSONObject的使用近似于Map
JSONObject jsonObject = JSON.parseObject(jsonStr);
// 将json字符串转为JSONArray
// JSONObject的使用近似于List
JSONArray jsonArray = JSON.parseArray(jsonStr);
// 还有很多相关方法都见名知意,不多赘述

gson

  • gson的使用与fastjson大同小异,都有相似的功能
  • 引入jar包,本文使用的是包为:gson-2.8.6.jar
  • 需自行下载jar包,或使用目前最新的maven依赖
<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.8.7</version>
</dependency>

对象转json

// 新建对象
Teacher t = new Teacher("123", "张三", 48, new String[]{"数学", "地理", "历史"});
// 解析为JSON字符串
String json = new Gson().toJson(t);
// 输出JSON字符串
System.out.println(json);

执行结果:{“id”:“123”,“name”:“张三”,“age”:48,“subjects”:[“数学”,“地理”,“历史”]}

json转对象

// json字符串
String json = "{\"age\":48,\"id\":\"123\",\"name\":\"张三\",\"subjects\":[\"数学\",\"地理\",\"历史\"]}";
// json字符串转为对象
Teacher teacher = new Gson().fromJson(json, Teacher.class);
// 输出
System.out.println(teacher);

执行结果:Teacher{id=‘123’, name=‘张三’, age=48, subjects=[数学, 地理, 历史]}

  • 在开发当中,json十分常用,经常会使用json格式的数据进行前后端的交互。网上有很多json的在线工具(解析、视图、格式化等),方便开发使用
上一篇:JAVA 序列化(不全 后续跟新)


下一篇:浅谈Java面向对象编程之多态、继承、抽象类、接口