2016-08-09 66 views
1

Sehr verwirrt mit JsonBeans von Libgdx. Versuche zu speichern & Laden Spielfortschritt zu lokalen Speicher. Initialisierung Datei:Schreiben und Lesen von JSON mit Libgdx

file=Gdx.files.local(FILENAME); 

Lesen json:

if (file.exists()) { 
     JsonReader jsonReader = new JsonReader(); 
     JsonValue jv = jsonReader.parse(file.reader()); 
     levels = jv.getInt(LEVELS, 1); 
} 

App stirbt mit NullPointerException bei levels = jv.getInt(LEVELS, 1); (jv ist null).

Aber Schreiben auch nicht funktioniert, Ausgabedatei leer ist:

Json json=new Json(JsonWriter.OutputType.json); 
json.setWriter(file.writer(true)); 
json.writeObjectStart(); 
json.writeValue(LEVELS, levels); 
json.writeObjectEnd(); 

Irgendwelche Vorschläge? Danke im Voraus.

+0

Das sollte in Ordnung sein. Hat Ihre Datei irgendwo einen Typ? Wie in deinen Feldern? – James

+0

Versteh nicht was du meinst :) – constantinopolskaya

Antwort

1

Probieren Sie Gdx.files.internal anstelle von Gdx.files.local aus, da Sie möglicherweise keine Schreib- und Leseberechtigung für den lokalen Speicher haben.

Für Desktop Als Administrator ausführen (ich glaube, seine genug)

für Android Add Schreib/Lese-Berechtigungen Manifest auf Android.

0

Verdammt, Tutorial bei Libgdx Wiki ist extrem wenig informativ. Zunächst einmal nie erwähnt, was Sie Writer bis Json Instanz setzen müssen, zweitens nach dem Lesen des Gefühls bleibt, dass die ganze Arbeit auf der Aufnahme von JSON auf CD von Json Klasse getan wurde, aber es ist nicht. Sie müssen dies selbst tun:

file.writeString(json.prettyPrint(progress), false); 

Danach funktionierte alles. Danke an alle.