Java 使用Libgdx编写和读取JSON

Java 使用Libgdx编写和读取JSON,java,android,json,libgdx,Java,Android,Json,Libgdx,与Libgdx中的JsonBeans非常混淆。正在尝试将游戏进度保存并加载到本地存储。正在初始化文件: file=Gdx.files.local(FILENAME); 阅读json: if (file.exists()) { JsonReader jsonReader = new JsonReader(); JsonValue jv = jsonReader.parse(file.reader()); levels = jv.getInt(LEV

与Libgdx中的
JsonBeans
非常混淆。正在尝试将游戏进度保存并加载到本地存储。正在初始化文件:

file=Gdx.files.local(FILENAME);
阅读json:

if (file.exists()) {
        JsonReader jsonReader = new JsonReader();
        JsonValue jv = jsonReader.parse(file.reader());
        levels = jv.getInt(LEVELS, 1);
}
应用程序在
levels=jv.getInt(levels,1)时死于
NullPointerException
jv
null

但写入也不起作用,输出文件为空:

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

有什么建议吗?提前感谢。

请尝试Gdx.files.internal而不是Gdx.files.local,因为您可能没有写入和读取本地存储的权限

对于以管理员身份运行的桌面(我认为已经足够了)


对于android,将写/读权限添加到android清单。

该死,Libgdx wiki上的教程非常缺乏信息。 首先,我从来没有提到需要将
Writer
设置为
Json
实例的内容,其次,在阅读之后,我感觉所有在光盘上录制Json的工作都是由
Json
类完成的,但事实并非如此。您需要自己完成这项工作:

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

在那之后,一切都起了作用。谢谢大家。

应该没问题。您的文件是否在某处定义了类型?比如在你的领域?不明白你的意思:)