什么是 JSON
JSON(JavaScript Object Notation,JS对象简谱)是一种数据交换格式。
将编程语言中的数据类型(比如数字、数组、字符串、对象等)转化为 JSON 字符串就可以在网络中进行传输,然后编程语言再解析 JSON 文档就可以将数据转换为对应的格式。
其中将某种语言的数据转化为 JSON字符串可以看做是编码,将 JSON 字符串转化为对应的数据可以看做是解码。
JSON 结构和语法
JSON 文件有一个基础元素和两个结构,基础元素指的就是键值对,两个结构指的是对象和数组。
键值对的键是字符串,值可以是多种数据类型,比如字符串、数字、三种字面量(true,false,null)、数组或者对象。
其中字符串是任意数量 Unicode 字符的集合,单独的字符就是一个单独的字符串,使用反斜线转义。
对象是一组被大括号 {}
括起来的键值对的集合,每一个键值对之间采用 ,
间隔;
而数组则是一组被中括号 []
括起来的值的集合,每一个值之间使用 ,
分隔。
JSON 文件示例
下面所示例子是一个数组和集合的嵌套。
1 2 3 4 5 6 7 8 9 10 11 12 13
| { "students" : [ { "name" : "yyy", "age" : 18, },
{ "name" : "zzz", "age" : 19, }, ] }
|
Java 中 JSON 的编解码接口
以下是搬运的菜鸟教程
Java 没有内置的解析 JSON 的库,需要借助第三方类库,常见的类库有:
本节介绍的 API 是 FastJson 中的 API。
环境配置
在 Maven 构建的项目中,在 pom.xml 文件中加入以下依赖即可。
1 2 3 4 5
| <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>
|
Java对象和数组与JSON字符串的转换
方法 |
作用 |
JSON.parseObject() |
从字符串解析 JSON 对象 |
JSON.parseArray() |
从字符串解析 JSON 数组 |
JSON.toJSONString(obj/array) |
将 JSON 对象或 JSON 数组转化为字符串 |
编码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public void testJson() { JSONObject object = new JSONObject(); object.put("string","string"); object.put("int",2); object.put("boolean",true); List<Integer> integers = Arrays.asList(1,2,3); object.put("list",integers); object.put("null",null);
System.out.println(object); }
|
结果:
1
| {"boolean":true,"string":"string","list":[1,2,3],"int":2}
|
解码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public void testJson2() {
JSONObject object = JSONObject .parseObject("{\"boolean\":true,\"string\":\"string\",\"list\":[1,2,3],\"int\":2}"); String s = object.getString("string"); System.out.println(s); int i = object.getIntValue("int"); System.out.println(i); boolean b = object.getBooleanValue("boolean"); System.out.println(b); List<Integer> integers = JSON.parseArray(object.getJSONArray("list").toJSONString(),Integer.class); integers.forEach(System.out::println); System.out.println(object.getString("null"));
}
|
结果:
1 2 3 4 5 6 7
| string 2 true 1 2 3 null
|
参考
菜鸟教程
JSON官网