目录
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的在线工具(解析、视图、格式化等),方便开发使用