[TOC]javascript
JSON (JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,用彻底独立于编程语言的文本格式来存储和传输数据。(能够用于代替XML)html
语法以下:前端
注意:java
- 属性与值之间用冒号 : 隔开,属性与属性之间用逗号 , 隔开
- json 串在 js 中会解析成对象。对象名称必须用单引号或者双引号包裹起来。value若是是字符串或者时间日期,也必须用引号引发来
[索引]
.name
万变不离其宗,再复杂的 json 对象均可以经过两种解析语法获得对象中的 value 值,只不过取值次数多几回而已git
number
彻底一致true
或false
string
null
Array
表示方式——[]
{ ... }
表示方式json对象:若是 js 对象的数据存储格式符合上述 json 对象的定义语法,则称该 js 对象为 json对象github
json字符串:json 对象的字符串表示法,简单地说,就是将 json 对象用引号引发来,使用文本表示一个 js 对象的信息数据库
json对象才能够经过两种解析语法进行取值,而转换成json字符串后则不能够直接取值编程
在项目过程当中,若是出现如下场景:json
MySQL
等关系型数据库或者 Redis
缓存数据库时,数据库字段中存储的是 json 字符串格式的数据因此,将 json 字符串转换为 java 对象或者将 java 对象转换为 json 字符串是很是有必要的。后端
json的转换工具是经过java编写并封装好的一些jar工具包,实现java对象或集合与json格式字符串的互换。
fastjson 是阿里巴巴的开源 JSON 解析库,它能够解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也能够从 JSON 字符串反序列化到 JavaBean。
maven项目中导入jar包依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.28</version> </dependency>
/** * @param object 任意java对象 * @return json字符串 */ public static String toJSONString(Object object) {}
调用方法:JSON.toJSONString(obj)
/** * 字符串转列表List * @param text json字符串 * @param clazz 指定转换的包装类型 * @param <T> List泛型,即指定的包装类型 * @return */ public static <T> List<T> parseArray(String text, Class<T> clazz) {} /** * 字符串转map * @param text json字符串 * @param clazz 转换成的存储类型:Map.class * @param <T> 存储类型 * @return */ //如下两种方式均可以将json串转换成对应的map集合 public static <T> T parseObject(String text, Class<T> clazz) {} public static JSONObject parseObject(String text) {}
调用:JSON.parseArray("", Animal.class)
,JSON.parseObject("", Map.class)
,JSON.parseObject("")
了解更多:具体案例
注意
- 若是非 json 格式的字符串经过转换工具来进行转换时,就会抛出异常
- JSONObject是Map接口的实现类,因此当返回值为JSONObject时,能够直接用Map对象进行接收
JavaScript 内置了 JSON 的解析,支持任何 JavaScript 对象序列化成一个JSON格式的字符串,一个JSON格式的字符串反序列化成一个 JavaScript 对象(json 对象能够直接在 javascript 中使用,经过解析语法取值)
JSON.stringify(obj)
JSON.parse(string)
eval('(' + jsonStr + ')')
eval() 使用注意:
- json字符外包裹一对小括号
- eval() 函数也能够将字符串转为json对象,但不推荐,由于这种方式不安全,eval会执行json串中的表达式