【发布时间】:2016-05-26 09:17:10
【问题描述】:
我想知道我可以如何做以下事情:
我想创建如下的json格式:
我希望能够创建一个递归函数,该函数接受一个对象,该对象包含相同类型的其他对象的列表,并以递归方式创建以下格式。
{
"name": "lib",
"contains": [{
"name": "room",
"contains": [{
"name": "bookshelf",
"contains": [{
"name": "shelf",
"contains": []
}]
}]
}]
}
我有这个方法如下:
private JSONObject json = new JSONObject();
public JSONObject setupLib(Contains contain) {
int count = contain.getContainerList().size();
for(int i = 0; i < count; i++){
try {
json.put("name", contain.getContainerList().get(i).getContainerName());
if(contain.getContainerList().size() != 0) {
Contains contains = (Contains) contain.getContainerList().get(i);
JSONArray array = new JSONArray();
json.put("contain",array.put(setupLib(contains)));}
}catch (JSONException e){
Log.i(Tag, e.getMessage());
}
}
return json;
} 我在数组/对象上得到一个 stackoverflow
【问题讨论】:
-
您需要提供
setupLib的完整代码,或者更好的是一个小型的自包含可编译示例来演示该问题。您的代码中的json变量是什么?setupLib返回什么? -
我添加了返回值,它应该返回一个类似上述格式的构建 json。只是不确定如何使递归起作用。
-
您对空列表的 if 语句毫无意义,因为 for 循环已经这样做了。如果你使用 Gson 库,你可以很容易地序列化你的类对象
-
序列化是什么意思,它如何允许我以递归方法创建多个对象?这不应该以某种方式工作吗?