gpt4 book ai didi

java - 调用 readValue 时出现 Json NullPointerException

转载 作者:太空宇宙 更新时间:2023-11-04 06:40:49 24 4
gpt4 key购买 nike

我决定通过实现 Json.Serialized 接口(interface)来编写自己的读写对象方法,因为我对 Json 的自动对象写入方式(它省略了数组)不满意。我的写入方法工作正常,但是由于某种原因,当我尝试读回值时,我收到 NullPointerException,就好像我正在寻找错误名称的值一样,我确信我没有这样做;写入和读取名称相同。这些是我的读写方法和 Json 输出(错误发生在第一次 readValue() 调用时)。

@Override
public void write(Json json)
{
json.writeObjectStart(this.getName());

json.writeValue("Level", level);
json.writeValue("Health", health);
json.writeValue("Allegiance", alle);
json.writeValue("Stats", stats);
json.writeValue("Has Moved", hasMoved);
json.writeValue("Position", new Point((int)this.getX(), (int)this.getY()));

json.writeObjectEnd();
}

@Override
public void read(Json json, JsonValue jsonData)
{
level = json.readValue("Level", Integer.class, jsonData);
health = json.readValue("Health", Integer.class, jsonData);
alle = json.readValue("Allegiance", Allegiance.class, jsonData);
stats = json.readValue("Stats", int[].class, jsonData);
hasMoved = json.readValue("Has Moved", Boolean.class, jsonData);

Point p = json.readValue("Position", Point.class, jsonData);
this.setPosition(p.x, p.y);
}
/////////////////////////////////////////////////////////////////////
player: {
party: {}
},
state: state1,
map: {
foes: {
units: [
{
class: com.strongjoshuagames.reverseblade.game.units.UnitWolf,
Wolf: {
Level: 5,
Health: 2,
Allegiance: FOE,
Stats: [ 2, 3, 3, 4, 3, 4, 3, 5 ],
"Has Moved": false,
Position: {
x: 320,
y: 320
}
}
}
]
}
}

请注意,我已经从之前保存的同一文件中读取了对象,因此该文件不应该成为问题。

最佳答案

我不是 100% 确定 JSON 库是如何工作的,但我相信,由于您在写入函数中执行了 json.writeObjectStart(this.getName()); ,所以您必须在读取函数中“反转”它,就像您编写的其他所有内容一样。为了做到这一点,您需要获取 JsonValue 的第一个子级并获取它的级别、健康状况等。我不确定 API,所以我无法给出确切的代码,但它会是这样的:

level = json.readValue("Level", Integer.class, jsonData.child());

这样想:我做了一个盒子并在里面放了一本字典。我不能只在盒子里查单词,我得先把字典拿出来。同样,您需要先获取您编写的对象,然后才能查找其字段。

关于java - 调用 readValue 时出现 Json NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24708984/

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