我必须转换为JSon String my Object。
我有一个班级(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)。那么,我该如何解决呢?
答案 0 :(得分:0)
让您的生活更轻松,并使用预定义的库来为您处理。我推荐杰克逊。 http://jackson.codehaus.org/1.0.0/javadoc/org/codehaus/jackson/map/ObjectMapper.html
答案 1 :(得分:0)
我看到你正在使用Gson。不错的选择:)
JSONObject可以处理
{
"array": [
{
"key": "value1"
},
{
"key": "value2"
}
]
}
JSONObject无法处理
[
{
"key": "value1"
},
{
"key": "value2"
}
]
要解决此问题,请使用 JSONElement ,而不是使用JSONObject。它可以处理两者。