json是一种与语言无关的数据交换格式。
作用:
- 使用Ajax进行前后端数据交换;
- 移动端与服务端的数据交换。
Json的格式
Json有两种格式:
- 对象格式:
{"key1":obj,"key2":obj,"key3":obj...}
- 数组/集合格式:
[obj,obj,obj...]
注意:对象格式与数组格式可以相互嵌套;json的key必须是双引号引起来的字符串,value是Object类型;json是Js的原生内容,也就意味着Js可以直接取出json对象中的数据。
Json的转换插件
将Java的对象或集合转成json形式字符串,需要通过Java的一些工具,直接将Java对象或者集合转成json字符串。常用的有如下三种:
- jsonlib
- Gson(Google)
- fastjson(阿里巴巴,性能最好)
一、Js中json数据转换
在网络数据传输过程中,json是以文本,即字符串的形式传递的,而Js操作的是json对象,所以,json对象与json字符串之间的相互转换是经常的事。
json对象转换成json字符串
var last=obj.toJSONString();
var last=JSON.stringify(obj);
json字符串转换成json对象
var obj = JSON.parse(str);
var obj = str.parseJSON();
var obj = eval('(' + str + ')');
二、Java中json数据转换
- 将单个java对象转换成jsonObject对象:
JSONObject jsonObject=JSONObject.fromObject(productPo);
- 将Java对象list集合转换成JsonArray对象:
JSONArray array= JSONArray.fromObject(productList);
- 将JsonArray转换成List对象:
//jsonarray转list
List<Object> fList=new ArrayList<Object>();
for (Object object : jsonArray) {
fList.add(object);
}
三、Java中json数据的基本操作
Java中常用的json操作对象有两个:JSONObject
和 JSONArray
,分别代表json对象和json数组对象。
本示例以net.sf.json
包中的json对象为例:
JSONObject jsonObject=new JSONObject();
JSONArray jsonArray=new JSONArray();
jsonObject.put("name",obj); //JSONObject没有add()方法
jsonArray.add(obj); //jsonArray没有put()方法
jsonArray.getJSONObject(i);//从jsonArray中取出某个JsonObject对象