1. 程式人生 > >java中Map、JSONArray、JSONObject的關係及轉換以及json字串與json物件的轉化

java中Map、JSONArray、JSONObject的關係及轉換以及json字串與json物件的轉化

    本文通過實際程式碼來探討一下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裡。