gpt4 book ai didi

java - libgdx Json解析

转载 作者:搜寻专家 更新时间:2023-11-01 03:59:53 24 4
gpt4 key购买 nike

您好,我正在尝试将我的 json 中的所有“id”值放入我的“结果”数组中。

我并没有真正理解 libgdx 的 json 类是如何工作的,但我知道 json 本身是如何工作的。

这是 json:http://pastebin.com/qu71EnMx

这是我的代码:

        Array<Integer> results = new Array<Integer>();    

Json jsonObject = new Json(OutputType.json);
JsonReader jsonReader = new JsonReader();
JsonValue jv = null;
JsonValue jv_array = null;
//
try {
String str = jsonObject.toJson(jsonString);
jv = jsonReader.parse(str);
} catch (SerializationException e) {
//show error
}
//
try {
jv_array = jv.get("table");
} catch (SerializationException e) {
//show error
}
//
for (int i = 0; i < jv_array.size; i++) {
//
try {

jv_array.get(i).get("name").asString();

results.add(new sic_PlayerInfos(
jv_array.get(i).get("id").asInt()
));
} catch (SerializationException e) {
//show error
}
}

这是我得到的错误:'Nullpointer' on jv_array.size

最佳答案

以这种方式进行操作会导致代码非常乱七八糟,难以维护。你的 JSON 文件看起来很简单,但如果你自己解析整个 JSON 文件,你的代码就会很糟糕。试想一下,如果您拥有多个 id 会是什么样子,这很可能会发生。

更简洁的方式是面向对象。创建一个类似于 JSON 文件结构的对象结构。在您的情况下,这可能如下所示:

public class Data {

public Array<TableEntry> table;

}

public class TableEntry {

public int id;

}

现在您可以使用 libgdx 轻松反序列化 JSON,而无需任何自定义序列化程序,因为 libgdx 使用反射来处理大多数标准情况。

Json json = new Json();
json.setTypeName(null);
json.setUsePrototypes(false);
json.setIgnoreUnknownFields(true);
json.setOutputType(OutputType.json);

// I'm using your file as a String here, but you can supply the file as well
Data data = json.fromJson(Data.class, "{\"table\": [{\"id\": 1},{\"id\": 2},{\"id\": 3},{\"id\": 4}]}");

现在您已经有了一个普通的旧 Java 对象 (POJO),其中包含您需要的所有信息,您可以根据需要对其进行处理。

Array<Integer> results = new Array<Integer>();
for (TableEntry entry : data.table) {
results.add(entry.id);
}

完成。非常干净的代码并且易于扩展。

关于java - libgdx Json解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23401431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com