java中Map、JSONArray、JSONObject的關係及轉換以及json字串與json物件的轉化
阿新 • • 發佈:2019-01-10
本文通過實際程式碼來探討一下java中的Map、JSONArray、JSONObject的關係及其轉換。直接上程式碼:
import java.util.HashMap; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; //如果沒有這些包請去這個地址下載:http://download.csdn.net/download/liu_ares/9962569 public class JSONTest1 { public static void main(String[] args){ JSONObjectSample(); JSONObject json = createJsonByMapTest(); System.out.println(json.getString("name"));//getString(String)方法就可以獲得對應String的值 JSONArray majorArray = json.getJSONArray("major");//獲取JSON中的陣列的時候需要通過getJSONArray(String) 返回值是一個JSONArray物件 通過這個物件的get(int index)方法就可以通過索引index獲取對應索引的值 } private static JSONObject JSONObjectSample() { JSONObject jsonTest = new JSONObject();//直接建立一個JSONObject物件 Object nullObject = null; try{ jsonTest.put("name", "shuqi");//直接往JSONObject物件內put JSON鍵值對 jsonTest.put("birthday", "1998-12-08"); jsonTest.put("major",new String[]{"Software","English"});//json的value傳陣列 jsonTest.put("girlfriend", nullObject);//如果這裡使用null為第二個引數 會產生歧義 所以這裡使用nullObject代替null跳過編譯 System.out.println(jsonTest.toString()); } catch(Exception e){ e.printStackTrace(); } return jsonTest; } private static JSONObject createJsonByMapTest(){ String nullObject=null; Map<String,Object> jsonTestMap = new HashMap<String,Object>(); jsonTestMap.put("name", "shuqi"); jsonTestMap.put("birthday", "1998-12-08"); jsonTestMap.put("major",new String[]{"Software","English"});//json的value傳陣列 jsonTestMap.put("girlfriend", nullObject);//如果這裡使用null為第二個引數 會產生歧義 所以這裡使用nullObject代替null跳過編譯 JSONObject jsonTest = new JSONObject(); jsonTest.putAll(jsonTestMap);//putAll(Map) 將Map變成json System.out.println(jsonTest.toString()); return jsonTest; } }
總結:在建立JSON的時候,可以先new一個JSONObject物件,然後直接通過JSONObject物件的put函式往這個JSONObject物件內新增JSON鍵值對,也可以通過生成一個Map物件,往Map裡生成鍵值對,然後通過JSONObject物件的putAll(Map)方法將Map轉化為JSONObject物件。由於JSONObject物件中對應某個鍵的值是一個數組,這個時候就需要用到getJSONArray(String key)的方法來獲取對應key的陣列,然後再返回的JSONArray陣列物件的get(int index)方法獲取該陣列對應索引的值。
最後加上json字串與json物件的轉化:entity obj = JSONObject.toBean(JSONObject.fromObject(jsonstr), entity.getClass());//這樣就可以將jsonstr這個json字串以json物件的形式存在類型別為entity.getClass()的物件obj裡。