什么是JSON
JSON是JavaScript Object Notation的缩写,可以翻译为JS对象图谱。JSON是一种轻量级的数据交换格式,它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。JSON 易于人阅读和编写,同时也易于机器解析和生成,可以有效地提升网络传输效率。——百度百科 在JSON出现之前,大家一直用XML来传递数据。因为XML是一种纯文本格式,所以它适合在网络上交换数据。XML本身不算复杂,但是,加上DTD、XSD、XPath、XSLT等一大堆复杂的规范以后,任何正常的软件开发人员碰到XML都会感觉头大了,最后大家发现,即使你努力钻研几个月,也未必搞得清楚XML的规范。
终于,在2002年的一天,道格拉斯·克罗克福特(DouglasCrockford)同学为了拯救深陷水深火热同时又被某几个巨型软件企业长期愚弄的软件工程师,发明了JSON这种超轻量级的数据交换格式。
由于JSON非常简单,很快就风靡Web世界,并且成为ECMA标准。几乎所有编程语言都有解析JSON的库,而在JavaScript中,我们可以直接使用JSON,因为JavaScript内置了JSON的解析。把任何JavaScript对象变成JSON,就是把这个对象序列化成一个JSON格式的字符串,这样才能够通过网络传递给其他计算机。如果我们收到一个JSON格式的字符串,只需要把它反序列化成一个JavaScript对象,就可以在JavaScript中直接使用这个对象了。——转自JSON是什么?如何正确理解?
JSON语法规则
对象(Object)用大括号(”{}”)表示,大括号里描述对象拥有的属性以及属性值。
键/值对(key/value)表示对象属性/属性值,键与值之间使用冒号连接, 多个键值对之间使用逗号分隔。其中键值对的键应使用双引号引住,值(value)有字符串、数值、布尔值、null、对象和数组几种类型。
数组(Array)用方括号(“[]”)表示,并且数组可以与对象相互嵌套。
Java中对象与JSON字符串的相互转换
转换的方式主要有两种,一种是引入Gson JAR包进行转换,另一种是引入FastJson JAR包进行转换。
方法1:引入Gson JAR包
- 将对象转换为JSON字符串步骤:
- 引入JAR包
- 在需要转换JSON字符串的位置编写如下代码即可: String json = new Gson().toJSON(要转换的对象); 案例:
1. Book b = new Book();
String json = new Gson().toJson(b);
- 将JSON字符串转换为对象步骤:
- 引入JAR包
- 在需要转换Java对象的位置, 编写如下代码: 对象 = new Gson().fromJson(JSON字符串,对象类型.class); 案例:
3. String json = “{“id”:1,“name”:“朝花夕拾”,“author”:“鲁迅”,“info”:“讲述了作者的一系列生活经历”,“price”:58.0}”;
Book book = new Gson().fromJson(json, Book.class);
方法2:引入FastJson JAR包
- 将对象转换为JSON字符串步骤:
- 引入JAR包
- 在需要转换JSON字符串的位置编写如下代码即可: String json=JSON.toJSONString(要转换的对象); 案例:
1. Book b = new Book();
String json=JSON.toJSONString(b);
- 将JSON字符串转换为对象步骤:
- 引入JAR包
- 在需要转换Java对象的位置, 编写如下代码: 类型 对象名=JSON.parseObject(JSON字符串, 类型.class) 或 List<类型> list=JSON.parseArray(JSON字符串,类型.class); 案例:
3. String json = “{“id”:1,“name”:“朝花夕拾”,“author”:“鲁迅”,“info”:“讲述了作者的一系列生活经历”,“price”:58.0}”;
Book book = JSON.parseObject(json, Book.class);