1.什么是JSON?
- JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.
- JSON 比 XML 更小、更快,更易解析。
- JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
- JSON 具有自我描述性,更易理解
2.语法格式
相较于Java、JavaScript和xml,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格式中可以与对象互相嵌套 [元素1,元素2...]
{
"name":"爷爷",
"age":88,
"huluwa":["大娃","二娃","三娃","四娃","五娃","六娃","七娃"{
"name":"穿山甲",
"info":"会刨洞"
}],
"妖精":{
"name":"蜈蚣精",
"hobby":"蛇精"
}
}
3.如何使用JSON?
使用JSON可以有两种途径,一个是导入谷歌的GSON.jar文件到IDEA的project下的lib包,二是导入阿里巴巴的fastjson.jar文件,执行方式同前步骤。
jar文件百度网盘:https://pan.baidu.com/s/1SjR8xXnNz40ERILdBgpQzA 提取码:1vfc
以GSON为例:接下来,你可以通过序列化将对象转换为JSON字符串
#添加一个Book的对象层
Book b = BookDao.find();
String json = new Gson().toJson(b);
System.out.println(json);
也可以反序列化将JSON字符串重新转换为对象
#将显示的JSON字符放入等于号右边的双引号内会自动形成下面格式
String json = "{\"id\":1,\"name\":\"白雪公主和大灰狼\",\"author\":\"小矮人
\",\"info\":\"他们最终幸福地生活在一起\",\"price\":299.0}";
Book book = new Gson().fromJson(json, Book.class);
System.out.println(book);
以fastjson为例,序列化:
转换JSON字符串的步骤:
String json=JSON.toJSONString(要转换的对象);
案例:
Book b = BookDao.find();
String json=JSON.toJSONString(b); #区别点在此 GSON是新new了一个GSON对象的toJson()方法
System.out.println(json);
反序列化
类型 对象名=JSON.parseObject(JSON字符串, 类型.class);
或
List<类型> list=JSON.parseArray(JSON字符串,类型.class);
案例:
String json = "{\"id\":1,\"name\":\"白雪公主和大灰狼\",\"author\":\"小矮人
\",\"info\":\"他们最终幸福地生活在一起\",\"price\":299.0}";
Book book = JSON.parseObject(json, Book.class);
System.out.println(book);