【发布时间】:2014-07-12 02:16:47
【问题描述】:
我决定通过实现Json.Serializable 接口来编写自己的读写对象方法,因为我对 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
}
}
}
]
}
}
请注意,我已经从之前保存的同一个文件中读取了对象,因此该文件不应该成为问题。
【问题讨论】:
标签: java json serialization libgdx