将Json树反序列化为Java中的对象以获取android app的结构

时间:2013-03-18 00:50:14

标签: java android structure deserialization gson

我正在编写一个android list-detail应用程序,我必须从json加载app结构。我正在尝试用Gson(Java)将非最佳json反序列化为对象,因为我将动态生成片段(我希望它可以完成:-))。

我在主FragmentActivity中有标签,一个标签有自己的片段和自己的json。每个选项卡都有自己的fragmentstack,用于控制后退和上移按钮。

我有这个json:

{
    "data": [],
    "children": [
        {
            "data": {
                "id": "5",
                "deep": "0",
                "url": "compare",
                "type": "navigation",
                "name": "Vergleich",
                "text": null,
                "number": null
            },
            "children": [
                {
                    "data": {
                        "id": "12",
                        "deep": "1",
                        "url": "information",
                        "type": "navigation",
                        "name": "information",
                        "text": null,
                        "number": null
                    },
                    "children": []
                },
                {
                    "data": {
                        "id": "13",
                        "deep": "1",
                        "url": "application",
                        "type": "navigation",
                        "name": "application",
                        "text": null,
                        "number": null
                    },
                    "children": []
                }
            ]
        }
    ]
}

我为gson创建了这个类:

public class StructureItem {
    StructureData data;
    ArrayList<StructureItem> children;
}
public class StructureData {
    public int id;
    public int deep;
    public String url;
    public String type;
    public String name;
    public String text;
    public String number;
}

我尝试使用以下命令创建对象:

String s = LoadJson();
Gson gson = gsonBuilder.create();
StructureItem root = gson.fromJson(s, StructureItem.class);

但不能成功。

你如何解决我的问题?任何简单的方案?

对于这个有一些注意事项会很棒。 我编程了几年,但这是我的第一个android项目。相当可怕的框架!

1 个答案:

答案 0 :(得分:0)

尝试将 ArrayList&lt; StructureItem&gt; 替换为StructureItem类中的 StructureItem []