最近在使用json数据,现将这几天的使用心得整理如下:
一:JSON定义
json (javascript object notation)
(1)json是什么?
是一种轻量级的数据交换标准。
1)数据交换
将数据转换成一种与平台无关的数据格式并传递给接收方。
比如:服务器端有一个order对象,要发送给浏览器,可以将order对象表示的数据转换成
一个xml文档然后发送给浏览器,在浏览器端,再去解析这个xml文档就可以获得order信息
<order>
<name>order001</name>
<price>100</price>
....
</order>
也可以将order对象表示的数据转换成一个json字符串{'name':'order001','price':100,....}
然后发送给浏览器,在浏览器端,可以很方便地将这个
json字符串转换成一个js对象,然后获得order信息。
2)轻量级
相对于xml作为数据交换标准,json所需要的文档大小更小,解析的速度更快。
(2)json的语法 www.json.org
1)表示一个对象
{属性名称1:属性值1,属性名称2:属性值2...}
注意:
a,属性名称要用引号(单引号或者双引号)括起来。
b,属性值可以是number,string,boolean(true/false),null,object
c,如果属性值是string,要用引号括起来。
2)表示一个对象组成的数组[{},{},{}...]
(3)使用json编写ajax应用程序
1) java对象转换成json字符串。
或者java对象组成的集合转换成json字符串。
使用json提供的官方的工具JSONObject,JSONArray
2)json字符串转换成javascript对象
使用一些js框架提供的函数,比如prototype提供的evalJSON函数。
java对象转换为js对象 java对象转换为JSON对象 JSON对象转换为js对象
prototype.js提供了很多有用的函数,比如:
$(id): document.getElementById(id)
$F(id): $(id).value
$(id1,id2,id3....): 分别查找id为id1,id2,id3...的节点,然后返回一个由这些节点组成的数组。
strip(): 除掉字符串两端的空格。
evalJSON():将json字符串转换成相应的js对象或者js对象组成的数组。
二:why要进行json数据交互
json数据格式在html页面中、接口调用中使用比较多,它的格式比较简单,解析相对方便。
比如:webservice接口,传输json数据。
三:SpringMVC进行json交互
1:客户端请求发送的数据可分为两种:json字符串和key/value数据。
2:json字符串需要指定contentType=application/json
key/value数据contentType=application/x-www-form-urlencoded
如图:
3:若客户端请求的是json字符串,@RequestBody可以将json串转成java对象,@ResponseBody也可以将java对象转成json串输出; 若请求的是key/value数据,不需要@RequestBody将json串转成java对象,@ResponseBody将java对象转成json串输出。
如图:请求json字符串和key/value对比图
综述:(1)、请求json、输出json,要求请求的是json串,所以在前端页面中需要将请求的内容转成json,不太方便。
(2)、请求key/value、输出json。此方法比较常用。
三:加载json转的jar包
springmvc中使用jackson的包进行json转换(@requestBody和@responseBody使用下边的包进行json转),如图:
四:配置JSON转换器
在SpringMVC.xml中的注解适配器中加入messageConverters
注意:如果使用**
<mvc:annotation-driven conversion-service="conversionService"
validator="validator"></mvc:annotation-driven>
**,则不用定义上边的内容。
五:json交互测试(略)