2016-08-09 2 views
1

Очень путать с JsonBeans от Libgdx. Попытка сэкономить & загрузить игру в локальное хранилище. Инициализация файла:Письмо и чтение JSON с Libgdx

file=Gdx.files.local(FILENAME); 

Чтение JSON:

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

App умирает с NullPointerException на levels = jv.getInt(LEVELS, 1); (jv является null).

Но письма не работает тоже выходной файл пуст:

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

Любые предложения? Заранее спасибо.

+0

Это должно быть хорошо. У вашего файла есть определенный тип? Например, в ваших полях? – James

+0

Не понимаю, что вы имеете в виду :) – constantinopolskaya

ответ

1

Попробуйте Gdx.files.internal вместо Gdx.files.local, потому что у вас могут не быть разрешений для записи и чтения из локального хранилища.

Для рабочего стола Запуск от имени администратора (я думаю, что его достаточно)

для андроид добавить записи/чтения разрешения на андроид манифеста.

0

Проклятье, учебник по вики Libgdx крайне неинформативен. Прежде всего никогда не упоминал, что вам нужно установить Writer в Json экземпляр, во-вторых, после чтения чувствуется, что вся работа по записи json на диске была сделана классом Json, но это не так. Вам необходимо сделать это самостоятельно:

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

После этого все сработало. Всем спасибо.

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