java优化的json文件读写方式
所以我有大量的JSON文件(其中包含一个JSON对象列表),我必须:
- 从文件的JSON对象列表中添加/删除对象
- 更新对象的值(特别是这个对象可以有一个对象列表,我可能需要在列表中添加或删除元素)
- 读取文件中的每个对象(在这里,我只想加载每个对象的文件,这样我就不必在RAM中加载整个文件,记住这些文件非常重)
在这里,您可以找到该文件的一个示例:
[
{
"id":"1",
"list":[
{ "id": "1", "example": "example" }, { "id": "2", "example": "example" }
]
},
{
"id":"2",
"list":[
{ "id": "1", "example": "example" }, { "id": "2", "example": "example" }
]
},
{
"id":"3",
"list":[
{ "id": "1", "example": "example" }, { "id": "2", "example": "example" }
]
},
...
]
对于更新数组的部分,我已经想到了读取对象,然后更改数组并替换文件中的整个对象(这可能有效,但我愿意接受更好的解决方案)
我该怎么做?(我正在使用Java)
现在我找到了一种写入JSON文件但不向其添加数据的方法(这就是我所需要的),下面是我的代码:
public void create(JSONObject document){
try {
FileWriter fw = new FileWriter(new File(collectionPath));
JSONWriter jsonWriter = new JSONWriter(fw);
jsonWriter.object();
Iterator<String> keys = document.keys();
while(keys.hasNext()){
String key = keys.next();
jsonWriter.key(key);
jsonWriter.value(document.get(key));
}
jsonWriter.endObject();
fw.flush();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
通过这样做,我写了文件,我需要附加数据,而不是写它(因为这将用新数据替换已经写入的数据,我不希望这样)
这是该文件的一个示例请记住,这是一个示例,真正的示例可能会影响事件千兆字节
{"uid":"1","password":["keyboardcat","keyboardcat1"],"nestedObject":{"bool":true,"string":"stringa","int":1,"object":{"bool":true,"string":"stringa","int":1}},"username":"test"}
共 (0) 个答案