简介
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。
JSON 语法规则
JSON是一个标记符的序列。这套标记符包含六个构造字符、字符串、数字和三个字面名。JSON是一个序列化的对象或数组。
对象由花括号括起来的逗号分割的成员构成,成员是字符串键和上文所述的值由逗号分割的键值对组成,如:

一本书 书名 简介 java class Book{ private String name; private String info; get/set... } Book b = new Book(); b.setName(“金苹果”); b.setInfo(“种苹果”); ... js: var b = new Object(); b.name = "金苹果"; b.info = "种苹果"; XML: <book> <name>金苹果</name> <info>种苹果</info> </book> JSON: { "name":"金苹果", "info":"种苹果" } 一个对象, 由一个大括号表示. 括号中 描述对象的属性 . 通过键值对来描述对象的属性 (可以理解为, 大括号中, 包含的是一个个的键值对.) 格式: 键与值之间使用冒号连接, 多个键值对之间使用逗号分隔. 键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解 析.) 键值对的值, 可以是JS中的任意类型的数据
数组格式,是由方括号括起来的一组值构成,数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)如:

[3, 1, 4, 1, 5, 9, 2, 6]
[元素1,元素2...]
值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

{ "name":"高宇童鞋", "age":18, "pengyou":["张三","李四","王二","麻子",{ "name":"野马老师", "info":"像匹野马一样狂奔在技术钻研的道路上" }], "heihei":{ "name":"大长刀", "length":"40m" } }
Java与JSON
做什么?
将Java中的对象 快速的转换为 JSON格式的字符串.
将JSON格式的字符串, 转换为Java的对象.
Gson解析
将对象转换为JSON字符串
转换JSON字符串的步骤:
1. 引入JAR包(gson-2.8.6.jar)
2. 在需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJSON(要转换的对象);
import com.google.gson.Gson; public class Demo1 { public static void main(String[] args) { /*//1. 创建Gson对象 Gson g = new Gson(); //2. 转换 Book b = new Book("100","金苹果","种植苹果真辛苦"); String s = g.toJson(b); System.out.println(s);*/ //1. 创建Gson对象 //2. 转换 Book b = new Book("100","金苹果","种植苹果真辛苦"); String s = new Gson().toJson(b); System.out.println(s); } }
将JSON字符串转换为对象
1. 引入JAR包(gson-2.8.6.jar)
2. 在需要转换Java对象的位置, 编写如下代码:
对象 = new Gson().fromJson(JSON字符串,对象类型.class);
public class Demo3 { public static void main(String[] args) { //1. 创建Gson对象 Gson g = new Gson(); //2. 转换 : {"id":"100","name":"金苹果","info":"种植苹果真辛苦","page":["锄禾日当午","汗滴禾下土","嘿嘿嘿嘿嘿"]} HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",\"嘿嘿嘿嘿嘿\"]}", HashMap.class); List page = (List) data.get("page"); System.out.println(page.get(1)); } }
FastJson解析
fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
将对象转换为JSON字符串
转换JSON字符串的步骤:
1. 引入JAR包(fastjson-1.2.70.jar)
2. 在需要转换JSON字符串的位置编写如下代码即可:
String json=JSON.toJSONString(要转换的对象);
import com.alibaba.fastjson.JSON; public class Demo4 { public static void main(String[] args) { Book book = new Book("1002","唐诗三百首","床前明月光,地上鞋一堆。床上我杰哥,喊十块钱一双。"); //1. 转换 String json = JSON.toJSONString(book); System.out.println(json); } }
将JSON字符串转换为对象
1. 引入JAR包(fastjson-1.2.70.jar)
2. 在需要转换Java对象的位置, 编写如下代码:
类型 对象名=JSON.parseObject(JSON字符串, 类型.class);
或
List<类型> list=JSON.parseArray(JSON字符串,类型.class);
public class Demo5 { public static void main(String[] args) { //1. 转换 : {"id":"1002","info":"床前明月光,地上鞋一堆。床上我杰哥,喊十块钱一双。","name":"唐诗三百首"} Book book = JSON.parseObject("{\"id\":\"1002\",\"info\":\"床前明月光,地上鞋一堆。床上我杰哥,喊十块钱一双。\",\"name\":\"唐诗三百首\"}", Book.class); System.out.println(book.getId()); } }
public class Demo6 { public static void main(String[] args) { //1. 转换 : ["一二三","二三四","三四五"] List<String> strings = JSON.parseArray("[\"一二三\",\"二三四\",\"三四五\"]", String.class); System.out.println(strings.get(1)); } }
end~
浙公网安备 33010602011771号