JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。JSON有两种结构:对象、数组
1、JSON对象: 名称用引号括起来,值如果是字符串则必须用括号,数值型则不须要,例如:
var obj={"id":"001","name":"李四","sex":"男"};
2、JSON数组: 数组是值(value)的有序集合,例如:
var array=[{"id":"001","name":"李四","sex":"男"},
{"id":"002","name":"程靓","sex":"女"},
{"id":"003","name":"王五","sex":"男"}]
JSON格式数据传输,是以文本(字符串)形式传递的。JavaScript操作JSON数据,是以JSON对象进行的。
JSON字符串: var str = '{ "name": "李四", "sex": "男" }';
JSON对象: var obj = { "name": "李四", "sex": "男" };
JSON对象和JSON字符串的相互转换
1、“JSON对象”-à“JSON字符串”
(1)var obj = eval('(' + str + ')');
(2)var obj = str.parseJSON();
(3)var obj = JSON.parse(str);
注意:如果obj本来就是一个JSON对象,那么运用 eval()函数转换后(哪怕是多次转换)还是JSON对象,但是运用 parseJSON()函数处理后会有疑问(抛出语法异常)。
2、“JSON字符串”-à“JSON对象”
var str=obj.toJSONString();
var str=JSON.stringify(obj);
<%@ page language="java" pageEncoding="GBK"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base> <title></title> <script type="text/javascript" src="<%=request.getContextPath() %>/js/json.js"></script> <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.2.6.js"></script></head> <body> <input type="button" value="GO" onclick="JsonToStr()" /> </body> <script type="text/javascript"> var str="{ \"name\": \"江高波\", \"sex\": \"老男人\" }"; var str1="{ \"name\": \"江高波111\", \"sex\": \"老男人111\" }"; var str2="{ \"name\": \"江高波222\", \"sex\": \"老男人222\" }"; var json={ "name": "李四", "sex": "男" }; var jsonArray=[{ "name": "张傘", "sex": "女" },{ "name": "李四", "sex": "男" }]; //json对象数据读取 function redJson(){ alert(json.name+"是"+json.sex+"人."); } //json数组对象数据读取 function redJsonArray(){ alert(jsonArray.length);//json数组长度 for(var i=0;i<jsonArray.length;i++){//json数组遍历 var obj=jsonArray[i]; alert(obj.name+"是"+obj.sex+"人."); } } //字符串转json function strJson(){ var obj= eval('(' + str + ')');//方法一 alert(obj); alert(obj.name+"是"+obj.sex+"人."); obj=str1.parseJSON();//方法二 alert(obj); alert(obj.name+"是"+obj.sex+"人."); obj=JSON.parse(str2);//方法三 alert(obj); alert(obj.name+"是"+obj.sex+"人."); } //字符串转json function strJson1(){ var obj=new Object();//对象 obj.name="名字"; obj.age="25"; obj.sex="不男不女"; var jsonStr=obj.toJSONString();//对象转成json字符串 var json=eval('(' + jsonStr + ')');//json字符串转成json alert(json); } //json to string function JsonToStr(){ alert(json); var mystr=json.toJSONString();//JSON to JSONString alert(mystr); alert(jsonArray); mystr=jsonArray.toJSONString();//JSON array to JSONString alert(mystr); var myj=mystr.parseJSON();//JSONString to JSON alert(myj); for(var i=0;i<myj.length;i++){ alert(myj[i].name+myj[i].sex); } } </script> </html>
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class JavaJSON { public void ToJSON(){ //1、数组转换成JSON String[] array=new String[10]; for(int i=0;i<10;i++) array[i]="KKK"+String.valueOf(i); JSONArray jsonArray = JSONArray.fromObject(array); System.out.println(jsonArray); //prints ["KKK0","KKK1","KKK2","KKK3","KKK4","KKK5","KKK6","KKK7","KKK8","KKK9"] //2、List转换成JSON List list = new ArrayList(); list.add( "book" ); list.add( "food" ); list.add( "person" ); JSONArray jsonArray2 = JSONArray.fromObject( list ); System.out.println( jsonArray2 ); // prints ["book","food","person"] //3、JSON字符串转换成JSON JSONArray jsonArray3 = JSONArray.fromObject( "['中国','日本','美国']" ); System.out.println( jsonArray3 ); // prints ["中国","日本","美国"] //4、Map转换成JSON Map map=new HashMap(); map.put("姓名", "老毛"); map.put("性别", "男"); map.put("职务", "主*"); map.put("评价", "“人多力量大”害了中国中国人民"); JSONArray jsonArray4 = JSONArray.fromObject(map); System.out.println( jsonArray4 ); // prints [{"性别":"男","姓名":"老毛","职务":"主*","评价":"“人多力量大”害了中国中国人民"}] //5、bean Person p=new Person(); p.setCid("5303021584555"); p.setName("苍井空"); p.setSex("女"); p.setAddress("日本"); p.setNote("AV"); JSONObject jo=JSONObject.fromObject(p); System.out.println(jo); //prints {"address":"日本","cid":"5303021584555","name":"苍井空","note":"AV","sex":"女"} } }