2013-06-25 38 views
0

我必須轉換爲JSon String my Object。對象A的JSON列表<ObjectB>

我有一個類(對象A)

public class ObjectA { 
    private int information; 
    private List<ObjectB> objB; 
} 

這個類(JSON)試圖解決我的問題

public class JSon extends Activity { 

    private ObjectA objA; 

    public JSon() { } 

    Public String toJSON(Object pObject) { 
      this.objA = pObject; 
      String temp = ""; 

      JSONObject jsonObject= new JSONObject(); 
      try { 
       jsonObject.put("information", objA.getInfo()); 
       for (int i=0; i<objA.getobjB().size(); i++) { 
        temp = this.objBToJSON(i); 
        jsonObject.put("objB", temp); 
       } 

       return jsonObject.toString(); 
      } catch (JSONException e) { 
      e.printStackTrace(); 
      return ""; 
     } 

     private String objBToJSON(int i) { 
      JSONObject jsonObject= new JSONObject(); 
      try { 
       jsonObject.put("info1", objAI.getobjB().get(i).getInfo1()); 
       jsonObject.put("info2", objAI.getobjB().get(i).getInfo2()); 

       return jsonObject.toString(); 
      } catch (JSONException e) { 
      e.printStackTrace(); 
      return ""; 
     } 
    } 

    public ObjectA toOkjectA(String pString) { 

     ObjectA objA = new Gson().fromJson(pString, ObjectA.class); 
     return objA; 
} 

}

的的toJSON方法(稱爲另一個類, String temp = new JSon()。toJSON(objA))不正確保存我的對象,因爲當我嘗試讀取它(objA = new Gson()。fromJson(pStringJSON,Libretto.class))我有一個錯誤預計BEGIN_ARRAY)。那麼,我該如何解決它?

回答

0

我看到你在使用Gson。不錯的選擇:)

的JSONObject可以處理

{ 
    "array": [ 
    { 
     "key": "value1" 
    }, 
    { 
     "key": "value2" 
    } 
    ] 
} 

的JSONObject不能處理

[ 
    { 
    "key": "value1" 
    }, 
    { 
    "key": "value2" 
    } 
] 

爲了解決這個問題,而不是使用的JSONObject,使用JSONElement。它可以處理兩者。

+0

謝謝!所以,這是我的問題。但是,如下所示,我會嘗試傑克遜庫來解決它,並semplify我的代碼:) – user2520969