如何使用数据编辑json文件并保存

时间:2017-04-18 12:57:36

标签: java android json file

我有一个包含很多对象的json文件。此文件位于res / raw。我正在读取此文件并在我的UI中显示列表中的对象。在用户使用此列表关闭活动后,用户最多的更改将保存在已读取的文件中。

3 个答案:

答案 0 :(得分:3)

如果您的文件位于apk文件中,则无法更改。而不是具有存储在持久存储中的标志。如果它是你的应用程序的第一次运行,那么从apk读取这个json文件,处理它并将其存储在设备文件系统中。

每次下一次运行时,检查标志,如果不是第一次运行,则从文件系统中读取文件并进一步处理。

答案 1 :(得分:1)

这是使事情变得静止的坏方法,但如果对你来说太紧急,你可以读一次json文件并将其转换为java model(pojo)对象并使该对象成为静态,当你下次访问同一活动时ui来自那个静态对象而不是再次读取和解析它,为了安全起见,你可以检查pojo类对象是否为null。

答案 2 :(得分:0)

这可能只能通过写入外部存储来实现。下面是我编写的一些代码,它从JSON文件中读取数据并用新值覆盖文件。您将需要GSON库。

File file; // Your file!
String input = (new BufferedReader(new FileReader(file))).readLine(); // Read file
Gson gsoninterface = new Gson();
ArrayList fromjson = gsoninterface.fromJson(input, ArrayList.class); // Store items in JSON file to Java object
fromjson.add(YourObject) // Add your value
GsonBuilder gsonbuilder = new GsonBuilder(); // Make Gsonbuilder
String a = gsonbuilder.create().toJson(fromjson); // Convert back to JSON
FileOutputStream outputStream; // Setup FileOutputStream
try {
     outputStream = openFileOutput(file.getName(), Context.MODE_PRIVATE); // Open file for write
     outputStream.write(a.getBytes()); // Write to file
     outputStream.close(); // Close outputStream
} catch (Exception e) {
     e.printStackTrace();
}