JSON物件中的JSONObject和JSONArray以及與Map、String、陣列的轉化
阿新 • • 發佈:2019-02-11
本文一句的寫作思路:由簡入繁
一、簡單模式
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]);
三、實戰應用測試
- /**
- * 測試將字串轉化為JSONArray
- * 然後取出特定的值
-
* import net.sf.json.JSONArray;
- * import net.sf.json.JSONObject;
- * import org.apache.commons.lang.StringUtils;
- */
- @Test
- publicvoid test2(){
- String sCheck;//待檢測字串
- //null 場景
- String s0=null;
- //空串場景
- String s1="";
- //包含且只包含一個場景
- String s2="[{\"name\":\"名字1\",\"type\":\"type1\",\"group\":\"1.02\"}]";
- //不包含,但是有其他場景
- String s3="[{\"type\":\"type2\",\"group\":2,\"name\":\"啦啦啦\",\"tip\":\"快快參加吧!\"}]";
- //混合包含且包含正確的場景-靠後
- String s4="[{\"type\":\"type2\",\"group\":2,\"name\":\"啦啦啦\",\"tip\":\"快快參加吧!\"},{\"name\":\"名字1\",\"type\":\"type1\",\"group\":\"1.02\"}]";
- //混合包含且包含正確的場景-靠前
- String s5="[{\"name\":\"名字1\",\"type\":\"type1\",\"group\":\"1.02\"},{\"type\":\"type2\",\"group\":2,\"name\":\"啦啦啦\",\"tip\":\"快快參加吧!\"}]";
- sCheck=s5;
- String result ="0";//名字1預設為0
- if(StringUtils.isNotBlank(sCheck)){//如果字串不為空
- JSONArray jary=JSONArray.fromObject(sCheck);
- for(int i=0;i<jary.size();i++){
- JSONObject job=JSONObject.fromObject(jary.get(i).toString());
- if("type1".equals((String)job.get("type"))){
- System.out.println("預期的type值"+(String)job.get("type"));
- result=(String)job.get("group");//獲取對應的名字1
- break;//迴圈終止
- }else{
- System.out.println("非預期的type值"+(String)job.get("type"));
- }
- }
- }
- System.out.println("名字1的值為:"+result);
- }