JSON
-
概念: JavaScript Object Notation js对象表示法
-
是一种轻量型的数据交换格式
-
主要是用于数据的传输
-
相比较于XML,体积较小,传输速度较快,解析更容易
-
JSON使用JavaScript语法来描述数据对象,但是JSON它是独立于平台和语言的
-
JSON文本格式在语法创建上与JS对象的语法很相似。
-
-
语法:
-
基本规则:
-
数据主要是在键、值中:json数据它主要是以键值对的形式构成的。
-
键要求用引号(双引号/单引号)引起来,也可以不使用
例如:
<script> // 定义方式和js对象的方式很相似 {} var person = {};// 此时person就是一个空对象 不是null var person = {"属性名1":属性值1,"属性名2":属性值2,"eat":function(){.....},..} var personJson = {"属性名1":属性值1,,"属性名2":属性值2,....}; // 定义了一个personJSon对象 var personOne = {"username":"小孙",'age':18,address:"郑州市",'gender':true}; // 后端中的数组存储值的形式 {} int[] arr = {}; </script>
-
值的取值类型:
-
数字:整数、小数
-
字符串:用引号引起来
-
布尔值:true、false
-
数组: 使用[]—>
例如:
var peoples = [{"username":"张三","age":18,"address":"郑州市"},{"username":"李四","age":20,"address":"新郑市"},{"username":"王五","age":25,"address":"新密市"},......];
-
对象: 使用{}
例如:
// 方式一 var people = {"username":"张三","age":18,"address":"郑州市"}; // 方式二 var people = {"username":"张三","address":{"省份":"河南省","地级市":"郑州市","区":"经开区"},"score":{"英语":70,"历史":60,"物理":90},..}; // 方式三 var people = {"username":"张三","address":{"省份":"河南省","地级市":"郑州市","区":"经开区"},"score":[{"英语":70},{"历史":60},{"物理":90}],..}
-
null 空对象 【不用】
-
-
如果json数据较多中间使用逗号隔开,也就是多个键值对之间使用逗号隔开
-
花括号表示对象,中括号表示数组
-
定义json对象使用{}方式
-
-
-
从JSON对象中取值
- 语法格式: ① json对象.key名称 ② json对象[“key名称”]
- 如果是数组: 数组对象[索引]—>获取的是某一个json对象
- 如果是数组: 遍历 for普通循环 增强for循环for of /for in forEach()—>Lambda
-
-
Json字符串和Java对象的相互转换
-
JSON解析器:
-
常见的JSON解析器:fastjson gson jackjson JsonLib
-
相互转换: 反射机制实现的
-
借助于JSON工具jar包
-
Java对象转换成Json字符串
-
使用步骤:
- 导入jar包 -----> json工具jar包
- 构建JSON解析对象
- 调用JSON对象中的相关api方法进行转换
-
三个类六个方法
-
fastjson ----> JSON
Java对象----->json字符串 toJSONString(java对象);
json字符串----->java对象 parseObject(json字符串,字节码对象)
-
gson ------>Gson
java对象------>json字符串 toJSON(javaa对象)
json字符串---->java对象 fromJson(json字符串,字节码对象)
-
jackjson -----> ObjectMapper
java对象 ------->json字符串 writeValueAsString(java对象)
json字符串 ------>Java对象 readValue(json字符串,字节码对象)
-
-
如果后端需要手动处理json格式的字符串值,需要把它转换成JSONObject
-
-
-
-
注意事项:
- java对象在转换为json字符串时,日期类型值大多数都会被转换成long类型的时间戳
- 需要把异常的日期值再转换成我们需要的日期值
- 使用两个注解:jackson工具包中的注解
- @JsonIgnore 转换 json值时忽略掉该字段值
- @JsonFormat 转换json值时按照指定格式进行转换。pattern = “yyyy-MM-dd”
-
服务器响应给客户端时,如果响应值为json数据格式,有两种方式:
-
第一种方式:response.setContentType(“application/json;charset=utf-8”),客户端不需要做任何设置
function(data){} ------> data此时就是json对象 按照json对象取值方式来获取value值
-
第二种方式:在客户端中, $.ajax–>指定dataType:“json”
. g e t ( ) / .get()/ .get()/.post() ----->指定type:“json”
在ajax中的 function(data){} —>data此时也是一个json对象
-
-