解析要用作菜单的JSON文件;“树”;在Android的列表视图中

解析要用作菜单的JSON文件;“树”;在Android的列表视图中,android,json,listview,Android,Json,Listview,目前我的项目中有一个本地JSON文件,我希望将其解析为一个数组,然后使用该数组生成可单击的列表项,以创建一种菜单。下面是一个示例的屏幕截图 我知道如何从数组中创建它,我遇到的问题是将需要的内容解析到数组中,以便创建此列表视图。下面是我的JSON示例 { "Weapons": { "Ranged": [ { "name": "Bow", "desc" : "Th

目前我的项目中有一个本地JSON文件,我希望将其解析为一个数组,然后使用该数组生成可单击的列表项,以创建一种菜单。下面是一个示例的屏幕截图

我知道如何从数组中创建它,我遇到的问题是将需要的内容解析到数组中,以便创建此列表视图。下面是我的JSON示例

{
    "Weapons":
    {
        "Ranged":
        [
            {
                "name": "Bow",
                "desc" : "This is a bow"
            },
            {
                "name": "Crossbow",
                "desc" : "This is a crossbow"
            }

        ],
        "Melee":
        [
            {
                "name" : "Machete",
                "desc" : "This is a machete"
            }
        ]
    },

    "Armor":
    {
        "Metal":
        [
            {
                "name": "Metal Chest Plate",
                "desc": "This is a metal chest plate"
            }
        ]
    }
}    
我想要一份以“武器”和“盔甲”开头的菜单。从那里,如果你点击“武器”,你会看到一个新的菜单,让你选择“远程”或“近战”。然后从“远程”你可以选择“弓”或“弩”。有没有人能帮我把它解析成一个数组,这样我就可以完成这个任务?我已经为此挣扎了好几天了。谢谢

您可以使用“JSON Simple”库执行任务。 关于这里的一些信息

公共静态最终字符串LOT\u JSON\u CAR=“CAR”;
公共静态最终字符串LOT\u JSON\u PRICE=“PRICE”;
公共静态最终字符串LOT\u JSON\u LOTS=“LOTS”;
JSONParser=新的JSONParser();
JSONObject JSONObject;
试一试{
jsonObject=(jsonObject)parser.parse(/*您的json在这里*/);
JSONArray jsonLotsArray=(JSONArray)jsonObject.get(LOT\u JSON\u LOTS);
迭代器迭代器=jsonLotsArray.Iterator();
while(iterator.hasNext()){
JSONObject jsonLot=iterator.next();
JSONObject jsonCar=(JSONObject)jsonLot.get(LOT\u JSON\u CAR);
JSONObject jsonUser=(JSONObject)jsonCar.get(CAR\u JSON\u USER);
}
}捕获(解析异常){
//这里有一些代码
}
您可以使用“JSON Simple”库执行任务。 关于这里的一些信息

公共静态最终字符串LOT\u JSON\u CAR=“CAR”;
公共静态最终字符串LOT\u JSON\u PRICE=“PRICE”;
公共静态最终字符串LOT\u JSON\u LOTS=“LOTS”;
JSONParser=新的JSONParser();
JSONObject JSONObject;
试一试{
jsonObject=(jsonObject)parser.parse(/*您的json在这里*/);
JSONArray jsonLotsArray=(JSONArray)jsonObject.get(LOT\u JSON\u LOTS);
迭代器迭代器=jsonLotsArray.Iterator();
while(iterator.hasNext()){
JSONObject jsonLot=iterator.next();
JSONObject jsonCar=(JSONObject)jsonLot.get(LOT\u JSON\u CAR);
JSONObject jsonUser=(JSONObject)jsonCar.get(CAR\u JSON\u USER);
}
}捕获(解析异常){
//这里有一些代码
}

您可以使用它将json文本反序列化到Java类中。从那里,您可以将该类与您选择的适配器一起使用来创建菜单(或者,如果您正在创建自定义菜单,则可以对其进行迭代)。

您可以使用该类将json文本反序列化到Java类中。从那里,您可以将该类与您选择的适配器一起使用来创建菜单(或者,如果您正在创建自定义菜单,则可以对其进行迭代)。

您可以按如下方式解决此问题:

从json结构创建POJO。这可以很容易地从

将源类型设置为JSON,注释样式设置为None。 此工具将帮助您创建具有完整层次结构的模型类

在此之后,可以使用GSON将json反序列化为java对象。GSON按如下方式执行此步骤:

Gson menu= new Gson();
menu.fromJson(receivedJsonFromBackend, YOURMODELCLASS.class)

之后,您只需使用menu.getName、menu.getDesc等菜单对象即可。

您可以按如下方式解决此问题:

从json结构创建POJO。这可以很容易地从

将源类型设置为JSON,注释样式设置为None。 此工具将帮助您创建具有完整层次结构的模型类

在此之后,可以使用GSON将json反序列化为java对象。GSON按如下方式执行此步骤:

Gson menu= new Gson();
menu.fromJson(receivedJsonFromBackend, YOURMODELCLASS.class)
之后,您可以只玩menu对象,如menu.getName、menu.getDesc等