0

我必须将我的对象转换为 JSON 字符串。

我有一堂课(ObjectA)

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) )不能正确保存我的 Obj,因为当我尝试读取它时 (objA = new Gson().fromJson(pStringJSON, Libretto .class)) 我有一个错误(预期 BEGIN_ARRAY)。那么,我该如何解决呢?

4

2 回答 2

0

我看到你正在使用 Gson。好的选择 :)

JSONObject 可以处理

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

JSONObject 无法处理

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

要解决此问题,请使用JSONElement而不是使用 JSONObject 。它可以处理两者。

于 2013-06-25T17:53:54.893 回答
0

让您的生活变得轻松,并使用预定义的库来为您处理。我推荐杰克逊。 http://jackson.codehaus.org/1.0.0/javadoc/org/codehaus/jackson/map/ObjectMapper.html

于 2013-06-25T17:49:21.770 回答