【问题标题】:Why json dont work? [closed]为什么json不起作用? [关闭]
【发布时间】:2015-01-05 16:14:20
【问题描述】:

当我尝试运行我的项目时,我的游戏因以下错误而崩溃:

Exception in thread "LWJGL Application" java.lang.NullPointerException
at com.badlogic.gdx.utils.Json.writeValue(Json.java:372)
at com.mygdx.game.GuardarMundo.write(GuardarMundo.java:12)
at com.mygdx.game.Mundo.<init>(Mundo.java:71)
at com.mygdx.game.Strategy.create(Strategy.java:9)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)

代码是:

static int x,z;
static String type;
@Override
public void write(Json json) {
    json.writeValue("X", x);
    json.writeValue("Z", z);
    json.writeValue("Type", type);
}

@Override
public void read(Json json, JsonValue jsonData) {
    // TODO Auto-generated method stub

}
public static void setBlock(int x2,int z2,String type2){
    x= x2;
    z=z2;
    type= type2;
}

有什么问题?

【问题讨论】:

  • JSON 确实有效。您的标题无效。
  • 您在setBlock() 方法之前调用write() 方法,因此您的type 为空。
  • 这里似乎type 为空。因为xy 是原始类型。分配type="" 然后检查,是否会抛出同样的错误?
  • 不,我在 setBlock() json = new Json(); guardar = new GuardarMundo(); for(int z = 0; z &lt; 10; z++) { for(int x = 0; x &lt; 10; x++) { GuardarMundo.setBlock(x,z,"dirt"); guardar.write(json); } }987654330@ 之后调用
  • 您尚未指定将 json 写入何处,因此您的 json 对象中的 writer 字段为 null。尝试使用json.toJson 而不是在没有上下文的情况下仅调用write(json)

标签: java json libgdx


【解决方案1】:

通过查看源 here,如果您突然调用 json.writeValue(),您将获得 NullPointerException,因为 json 对象中的 writer 字段将是 null

看起来你应该做的是调用json.toJson(...) 方法之一。那些为你初始化一个writer,然后将它用于对writeValue()的各种调用。

【讨论】:

    猜你喜欢
    • 2018-02-15
    • 2018-02-15
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    相关资源
    最近更新 更多