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

bestcxx發表於2016-01-27

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]);


三、實戰應用測試

/**
	 * 測試將字串轉化為JSONArray
	 * 然後取出特定的值
	 * import net.sf.json.JSONArray;
	 * import net.sf.json.JSONObject;
	 * import org.apache.commons.lang.StringUtils;
	 */
	@Test
	public void 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);
		
		
		
	}





相關文章