1. 什么是JSON
JSON的全称是JavaScript Object Notation,是一种轻量级的数据交换格式。JSON完全采用独立于编程语言的文本格式来存储和表示数据。JSON因为高效简洁而得到广泛应用。
2. JSON语法
(1)JSON是一个标记符的序列,包含对象或者数组。其有六个构造符,字符串,数字和三个字面值组成。
- 六个构造符号
花括号 {}
方括号 []
逗号 ,
冒号 : - 三个字面值
flase null true
(2)JSON的值可以是对象、数组、数字、字符串,三个字面值(false,null,true,必须为小写)中的一个。
(3)数组由方括号括起来的成员组成(逗号分隔)的。
比如:[55,28,34,76,34,90]
(4)对象是由花括号括起来的成员组成(逗号分隔)的键值对结构。字符串键需要用双引号引起来,对象和数组可以相互组合。
比如(表示一个学生信息):{“name”:“Jockson”,“age”:18,“score”:[“Math”:88,“English”:77,“Chinese”:99]}
(5)JSON本质上是一个字符串
3. JSON解析
Java本身没有提供JSON解析的包,所以要导入第三方的包,比较常用的是谷歌的Gson和阿里的Fastjson。相关的jar包可以在GitHub下载。
Gson的下载地址:Gson的jar下载地址
Fastjson下载地址:Fastjson的Github地址
还有一个比较好用的JSON在线解析网址:JSON在线解析网址
3.1. Gson
- 对象转JSON
import com.google.gson.Gson;
public class GsonDome1 {
public static void main(String[] args) {
//对象转json
Person p = new Person("小红","18");
String json = new Gson().toJson(p);
System.out.println(json);
}
}
运行结果:
- JSON转对象
(字符串的双引号需要转义字符处理)
import com.google.gson.Gson;
public class GsonDome2 {
public static void main(String[] args) {
//json转对象
String json = "{\"name\":\"小红\",\"age\":\"18\"}";
Person person = new Gson().fromJson(json,Person.class);
System.out.println(person);
}
}
运行结果:
3.2. Fastjson
- 对象转JSON
import com.alibaba.fastjson.JSON;
public class FastJsonDemo1 {
public static void main(String[] args) {
//对象转JSON
Person p = new Person("小花","22");
String json = JSON.toJSONString(p);
System.out.println(json);
}
}
运行结果:
- 对象转JSON
(分为转成对象和ArrayList两种情况,数组会转成ArrayList)
import java.util.List;
public class FastJsonDemo2 {
//json转对象
public static void main(String[] args) {
//对象
String json = "{\"age\":\"22\",\"name\":\"小花\"}";
Person person = JSON.parseObject(json,Person.class);
System.out.println(person);
//数组
String json1 = "[\"haha\",\"xixi\",\"heiehi\"]";
List<String> list = JSON.parseArray(json1,String.class);
for(String s : list){
System.out.println(s);
}
}
}