2015-01-17 2 views
0

Когда я пытаюсь запустить мой проект аварии моей игры с этой ошибкой:Почему json не работает?

Exception in thread "LWJGL Application" java.lang.NullPointerException 
at com.badlogic.gdx.utils.Json.writeValue(Json.java:376) 
at com.mygdx.game.MyGdxGame.write(MyGdxGame.java:30) 
at com.mygdx.game.MyGdxGame.create(MyGdxGame.java:25) 
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136) 
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114) 

И код:

private Json json; 
private int x = 1; 

@Override 
public void create() { 

    json = new Json(); 
    write(json); 
} 

@Override 
public void write(Json json) { 
    json.writeValue("X", x); 

} 

В чем проблема? Я не могу найти решение

+1

Вы не можете решить эту проблему без отладки или трассировки. –

+0

Вам нужно научиться отлаживать. Это умение, которое должны иметь все программисты, чтобы что-то добиться вообще. И отладка NullPointerException является одной из самых простых задач отладки и хорошим местом для начала обучения. –

ответ

1

Посмотрев на source code, похоже, проблема в том, что вы не установили автора. Непонятно, что вы делаете writeValue, если вы не установили запись, но вам нужно либо изменить способ, который вы вызываете (например, вызываете prettyPrint), либо сначала установите запись.

Например:

private Json json; 
private StringWriter writer; 

writer = new StringWriter(); 
json = new Json(); 
json.setWriter(writer); 
write(json); 

Затем вы можете использовать writer.toString(), чтобы получить JSON позже.

+0

Спасибо, но как я могу сохранить эту информацию в json-файле? –

+0

@ElPunto: вместо этого используйте OutputStreamWriter, обернув FileOutputStream? –

+0

Можете ли вы написать пример? –

Смежные вопросы