JSON基础知识总结

一、 总结

JSON对象是一个无序的"名称/值"对的集合
它开始于“{”,结束于“}”。每一个属性名和值间用“:”提示,属性间用“,”分隔。一个数组开始于"[",结束于"]",值之间用","分隔。

数组和List转换为JSON用JSONArray.fromObject 
Map、bean、beans(保存在一个List中转换)转换为JSON用 JSONObject.fromObject
JSONObject.toBean(JSONObject类型,Class类型)  // 转换为对象(如自定义类对象,Map对象等)

 

 

JSON (JavaScript Object Notation)是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互. 
JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。

Json必需的包(重新导入包后需重启下,因为这个问题浪费了我好长时间 ,需注意)
commons-beanutils.jar 
commons-lang-2.4.jar
commons-logging-1.1.1.jar
json-lib-2.2.3-jdk13.jar
ezmorph-1.0.6.jar
commons-collections-3.2.1.jar

Java代码   收藏代码
  1. <script language="javascript">  
  2.   
  3.  function showJSON() {     
  4.      var user =      
  5.      {      
  6.          "username":"andy",     
  7.          "age":20,     
  8.          "info": { "tel""123456""cellphone""98765"},     
  9.          "address":     
  10.              [     
  11.                  {"city":"beijing","postcode":"222333"},     
  12.                  {"city":"newyork","postcode":"555666"}     
  13.              ]     
  14.      }             
  15.      alert(user.username);     
  16.      alert(user.age);     
  17.      alert(user.info.cellphone);   
  18. //或       user.info["cellphone"]    
  19.      alert(user.address[0].city);     
  20.      alert(user.address[0].postcode);     
  21.  }   
  22. </script>  

 这表示一个user对象,拥有username, age, info, address 等属性。
同样也可以用JSON来简单的修改数据,修改上面的例子
js 代码

Java代码   收藏代码
  1. function showJSON() {     
  2.     var user =      
  3.     {      
  4.         "username":"andy",     
  5.         "age":20,     
  6.         "info": { "tel""123456""cellphone""98765"},     
  7.         "address":     
  8.             [     
  9.                 {"city":"beijing","postcode":"222333"},     
  10.                 {"city":"newyork","postcode":"555666"}     
  11.             ]     
  12.     }             
  13.     user.username = "Tom";     
  14.     alert(user.username);     
  15. }   

易错地方 (注意有无外引号):

Java代码   收藏代码
  1.     function testJson(){  
  2.            
  3.          var str = { "name""Violet""password""character" };   //JSON类型对象  
  4. //无引号,是JSON对象  
  5.          alert(typeof(str));  //JSON类型  
  6.          alert(str.password);   
  7.   
  8.          //alert(obj.toJSONString());    
  9.            
  10.           var a=50,b="xxx";  
  11.           var arr="{id:"+a+",name:'"+b+"'}"//string类型  
  12.               //字符串拼接为可转换为JSON的String   
  13.     
  14.           var str2 = '{ "name": "Violet", "password": "character" }';       
  15. //有引号,是String类型对象          
  16.           alert(typeof(str2)); //string类型  
  17.           var obj = eval('(' + str2 + ')');  //转换为JSON类型  
  18.           alert(typeof(obj)); //JSON类型  
  19.           alert(obj.name);  //Violet  
  20.     }  
  21.     </script>  
 
Java代码   收藏代码
  1. JSONObject resultJSON = new JSONObject();   
  2. resultJSON.put("param1"1);  
  3. resultJSON.put("param2"2);  
  4. resultJSON.put("param3"3);  
  5. System.out.println(resultJSON);    
  6. //{"param1":1,"param2":2,"param3":3}  
 

二、Java代码转换成json代码

1.List集合转换成json代码+
List list = new ArrayList();
list.add( "first" );
list.add( "second" );
JSONArray jsonArray2 = JSONArray.fromObject( list );

2.Map集合转换成json代码
Map map = new HashMap();
map.put("name", "json");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
map.put("arr", new String[] { "a", "b" });
map.put("func", "function(i){ return this.arr[i]; }");
JSONObject json = JSONObject.fromObject(map);
//{"func":function(i){ return this.arr[i]; },"arr":["a","b"],"int":1,"name":"json","bool":true}  


3.Bean转换成json代码
JSONObject jsonObject = JSONObject.fromObject(new JsonBean());

 

//当是对象的时候 
Student student = new Student(); 
student.setAge(18); 
student.setName("zhangsan"); 
student.setSex("male"); 
JSONObject jsonObject = JSONObject.fromObject(student); 
System.out.println(jsonObject);//输出{"age":18,"name":"zhangsan","sex":"male"}


4.数组转换成json代码
boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray1 = JSONArray.fromObject(boolArray);

5.beans转换成json代码
  List  userInfosList = new ArrayList<UserInfo>();
   UserInfo u1 = new UserInfo();
   u1.setUserId(10000); 
   u1.setUserName("qqqqq");
   u1.setPassword("111111");
   UserInfo u2 = new UserInfo();
   u2.setUserId(10001); 
   u2.setUserName("wwwww"); 
   u2.setPassword("222222");
   userInfosList.add(u1);
   userInfosList.add(u2);
   JSONArray json2=JSONArray.fromObject(userInfosList);

 

     Iterator it=json2.listIterator();
        while(it.hasNext())           
        {

            JSONObject obj=(JSONObject)it.next();
            UserInfo u=(UserInfo)JSONObject.toBean(obj,UserInfo.class); 
            System.out.println(u.getPassword());
        }


6、String转JSON

Java代码   收藏代码
  1. String listStr = "['apple','orange']";        
  2.         //JSONArray json = JSONArray.fromObject(listStr);  
  3.                 //结果:["apple","orange"]  
  4.         //必须用JSONArray来转,用JSONObject会出现以下错误信息:  
  5.             // A JSONObject text must begin with '{' at character 1 of ['apple','orange']  
  6.           
  7.         String mapStr2 = "{'apple','orange'}";  
  8.         JSONObject json = JSONObject.fromObject(mapStr2);  
  9.         //用JSONObject必须是键值对,上面会出现以下错误:  
  10.             //Expected a ':' after a key at character 9 of {'apple','orange'}         
  11.           
  12.         String mapStr1 = "{'age':30,'name':'Michael','baby':['Lucy','Lily']}";        
  13.         JSONObject json2 = JSONObject.fromObject(mapStr1);  
  14.                 //{"age":30,"name":"Michael","baby":["Lucy","Lily"]}          
  15.           
  16.         System.out.println(json);  

 

三、JSON转List、Map

 

转List:   JSONArray.toCollection(json)

Java代码   收藏代码
  1. //JSON转List  
  2.         String str = "['apple','orange']";  
  3.         JSONArray json = JSONArray.fromObject(str);  
  4.         Collection<String> list = JSONArray.toCollection(json);  
  5.         for (String s : list) {  
  6.                System.out.println(s);  
  7.         }  

 

转Map:JSONObject.toBean(json , Map.class)

Java代码   收藏代码
  1. //JOSN转Map  
  2.         String mapStr = "{'age':30,'name':'Michael','baby':['Lucy','Lily']}";  
  3.         JSONObject json3 = JSONObject.fromObject(mapStr);  
  4.         Map<String, Object> map = (Map) JSONObject.toBean(json3, Map.class);  
  5.         for (Map.Entry<String, Object> entry : map.entrySet()) {  
  6.             System.out.println(entry.getKey() + " " + entry.getValue());  
  7.         }  
  8.         //name Michael  
  9.         //age 30  
  10.         //baby [Lucy, Lily]  

 注意其Str转JSON问题!

 

四、遍历JSON数据的两种常用方式

Java代码   收藏代码
  1. var json={"status":1,"info":"u83b7u53d6u6210u529f","data":[{"id":"4","name":"u77f3u5bb6u5e84","information":"u5e02","Region_id":"3","type":"1"}]}  
  2. var data=json.data;  
  3. for(i=0;i<data.length;i++)  
  4. {  
  5.     document.write("Name:"+data[i].name+",Info:"+data[i].information+"");  
  6. }  
 
Java代码   收藏代码
  1. var json=[{"kl_id":"2","kl_title":"Test date1","kl_content":"Test date2","kl_type":"3","id":"6"},{"kl_id":"2","kl_title":"Test1","kl_content":"Test2","kl_type":"1","id":"9"}]  
  2.     var str = "";  
  3.     for (var one in json)  
  4.      {  
  5.         for(var key in json[one])  
  6.          {  
  7.              str += json[one][key] + ",";  
  8.          }  
  9.      }  
  10.      document.write(str);  
 

 

。。

你可能感兴趣的:(json)