Java LibGDX 如何解析一个 JSON?

Java LibGDX How to parse an JSON?

我有一个 json 文件,内容如下:

{
players: [
    {
        name: "",
        hp: 100
    },
    {
        name: "",
        hp: 120
    }
],
weapons: [
    {
        name: "Desert Eagle",
        price: 100
    },
    {
        name: "AK-47",
        price: 150
    }
]
}

如何解析成武器数组?我已经将此文件的内容作为字符串获取。然后我使用 libgdx JsonReader:

JsonValue json = new JsonReader().parse(text);

我还有一个 class 武器:

class Weapon {
    private String name;
    private int price;
}

接下来怎么把所有的武器都排成一个数组?

在libGDX中没有自动映射Json到Java对象,所以你必须自己遍历Json并创建合适的对象。例如,这就是您解析 weapons:

的方式
JsonValue json = new JsonReader().parse(text);
Array<Weapon> weapons = new Array<Weapon>();
JsonValue weaponsJson = json.get("weapons");
for (JsonValue weaponJson : weaponsJson.iterator()) // iterator() returns a list of children
{
    Weapon newWeapon = new Weapon();
    newWeapon.name = weaponJson.getString("name");
    newWeapon.price = weaponJson.getInt("price");
    weapons.add(newWeapon);
}