1. 程式人生 > >JSON物件中的JSONObject和JSONArray以及與Map、String、陣列的轉化

JSON物件中的JSONObject和JSONArray以及與Map、String、陣列的轉化

本文一句的寫作思路:由簡入繁

一、簡單模式

1、建立JSONObject物件

JSONObject json=new JSONObject();
json.put("name", "小明");
json.put("age", "10");
System.out.println(json.toString());

控制檯列印:

{"age":"10","name":"小明"}

2、建立JSONArray物件 

JSONArray ja=new JSONArray();
ja.add("1");
ja.add("2");
ja.add("3");
ja.add(3,"4");
System.out.println(ja.toString());

控制檯列印:

["1","2","3","4"]

二、進階模式

·難點就是轉移字元  "  寫成  \"  比如   "name"  就寫成 \"name\",但是   {      [     ;   這些字元不需要轉義,試試就知道了 

1、String型別的字串轉化為JSONObject物件

String str="{\"name\":\"小明\",\"年齡\":\"10\"}";
JSONObject json=JSONObject.fromObject(str);
System.out.println(json.toString());
System.out.println(json.get("name"));

控制檯列印:

{"name":"小明","年齡":"10"}
小明

2、String型別的字串轉化為JSONArray物件

String str="[\"1\",\"2\",\"3\",\"4\"]";
JSONArray ja=JSONArray.fromObject(str);
System.out.println(ja.get(0));

控制檯列印:

1

區分

String a[]={"1","2","3","4"};
System.out.println(a[0]);

三、實戰應用測試

  1. /** 
  2.      * 測試將字串轉化為JSONArray 
  3.      * 然後取出特定的值 
  4.      * import net.sf.json.JSONArray;
     
  5.      * import net.sf.json.JSONObject; 
  6.      * import org.apache.commons.lang.StringUtils; 
  7.      */
  8.     @Test
  9.     publicvoid test2(){  
  10.         String sCheck;//待檢測字串
  11.         //null 場景
  12.         String s0=null;  
  13.         //空串場景
  14.         String s1="";  
  15.         //包含且只包含一個場景
  16.         String s2="[{\"name\":\"名字1\",\"type\":\"type1\",\"group\":\"1.02\"}]";  
  17.         //不包含,但是有其他場景
  18.         String s3="[{\"type\":\"type2\",\"group\":2,\"name\":\"啦啦啦\",\"tip\":\"快快參加吧!\"}]";  
  19.         //混合包含且包含正確的場景-靠後
  20.         String s4="[{\"type\":\"type2\",\"group\":2,\"name\":\"啦啦啦\",\"tip\":\"快快參加吧!\"},{\"name\":\"名字1\",\"type\":\"type1\",\"group\":\"1.02\"}]";  
  21.         //混合包含且包含正確的場景-靠前
  22.         String s5="[{\"name\":\"名字1\",\"type\":\"type1\",\"group\":\"1.02\"},{\"type\":\"type2\",\"group\":2,\"name\":\"啦啦啦\",\"tip\":\"快快參加吧!\"}]";  
  23.         sCheck=s5;  
  24.         String result ="0";//名字1預設為0
  25.         if(StringUtils.isNotBlank(sCheck)){//如果字串不為空
  26.             JSONArray jary=JSONArray.fromObject(sCheck);  
  27.             for(int i=0;i<jary.size();i++){  
  28.                 JSONObject job=JSONObject.fromObject(jary.get(i).toString());  
  29.                 if("type1".equals((String)job.get("type"))){  
  30.                     System.out.println("預期的type值"+(String)job.get("type"));  
  31.                     result=(String)job.get("group");//獲取對應的名字1
  32.                     break;//迴圈終止
  33.                 }else{  
  34.                     System.out.println("非預期的type值"+(String)job.get("type"));  
  35.                 }  
  36.             }  
  37.         }  
  38.         System.out.println("名字1的值為:"+result);  
  39.     }