JSON:JavaScript Object Natation,用一句话总结就是:一种轻量级的、实现服务器与客户端交互的、完全独立的数据交换语言。 1、JSON的两种数据格式 A开始与结束的标志"{","}",里面放着各种key、value值并以“,”分隔。 B如果多个JSON组合就是有序的value集合,我们称之为JsonArray,他的构造形如[{},{},{}....] 2、java生成JSON对象 JSONObject obj = new JSONObje--------------ct();//new一个JSON对象 obj.put("key", "^^");//json对象存个值 System.err.println(obj); 运行的结果为{"key":"^^"} 3、java生成JsonArray对象 JSONArray array = new JSONArray(); JSONObject obj = new JSONObject(); obj.put("key", "呵呵"); array.add(obj); JSONObject obj1 = new JSONObject(); obj1.put("key", "嘿嘿"); array.add(obj1); System.err.println(array); 运行的结果为[{"key":"呵呵"},{"key":"嘿嘿"}] 4、java中String字符串与Json转换 json数组格式的字符串可以通过方法直接转换为JSONArray的格式: String aaa = "[{name1:{name2:{name3:'value1',name4:'value2'}}},{}]"; JSONArray.fromObject(aaa) JSONArray getJsonArray=JSONArray.fromObject(arrayStr);//将结果转换成JSONArray对象的形式
JSONObject getJsonObj = getJsonArray.getJSONObject(0);//获取json数组中的第一项
String result=getJsonObj.getJSONObject("name1").getJSONObject("name2").getJSONObject("name4"); 5、java解析JSon

	 // 一个未转化的字符串
	String str = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'},{name:'d',value:'dd'}]" ; 
	// 首先把字符串转成 JSONArray  对象
	JSONArray json1 = JSONArray.fromObject(str );
	if(json1.size()>0){
			 for(int i=0;i<json1.size();i++){
				 // 遍历 jsonarray 数组,把每一个对象转成 json 对象
				JSONObject job = json1.getJSONObject(i); 
				// 得到 每个对象中的属性值
				System.out.println(job.get("name")+"=") ;  
			 }
	}		

6、JSON 和 JS 对象互转 JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。 如: var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的 var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串 要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法: var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}' 要实现从 JSON 转换为对象,使用 JSON.parse() 方法: var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'} 7、jquery JSON的解析方式 一、eval() 对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明(type:json),或者以字符串方式接受,那么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次: var dataObj=eval("("+data+")");//转换为json对象 alert(dataObj.root.length);//输出root的子对象数量 $.each(dataObj.root,fucntion(idx,item){ if(idx==0){ return true; } //输出每个root子对象的名称和值 alert("name:"+item.name+",value:"+item.value); }) 注:对于一般的js生成json对象,只需要将$.each()方法替换为for语句即可,其他不变。 二、jQuery解析Json对象: jQuery提供了另一种方法“parseJSON”,这需要一个标准的JSON字符串,并返回生成的JavaScript对象。例如: var parsedJson = $.parseJSON(results); alert(parsedJson.name);