有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案