gson 如何在json文件中编辑和添加嵌套数据?[duplicate]

t1qtbnec  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(157)

此问题在此处已有答案

How to add values to nested json efficiently when data is undefined(1个答案)
12个月前关闭。
这只是为了测试,但基本上它所做的是当它接收到一个消息(消息应该像abc/xyz/pq=yo),然后把它做成一个像:-{"root":[{"abc":[{"xyz":[{"pq":"yo"}]}]}]},但我是否想要,例如,已经存在一个json,如果有人想添加像abc/xyz/lm=ayo这样的值,那么如果它不存在,那么它会把它添加到现有的json中。如果有人想更新像abc/xyz/pq=ayo这样的值,那么它会更新它。也就是说,如果存在一个子节点,那么它会更新一个值,否则它会创建它。
如果你想知道为什么json有一个数组,即使是一个单独的孩子,即,因为在情况下,如果我们想添加数据到特定的孩子,我们可以很容易地添加。
请记住,这只是readFileResult()中的测试代码,但我希望更改整个结构。
更新:-因为我知道确切的路径,当用户想添加数据时,我可以很容易地添加数据到该路径,但问题是如何检查如何检查是否存在数据?因为我在数组中嵌套了子对象('{“root”:[{“abc”:[{“xyz”:[{“pq”:“yo”}]}]}}'),我不能循环通过每个子对象并解析它,因为这将消耗大量的资源和时间。
另一个更新:-我已经把结构改为rfc 8259来去掉这些数组。这应该会更简单,但是仍然在“更新”数据方面很困难。

7tofc5zh

7tofc5zh1#

我发现了另一个更好的方法来解决这个问题,我稍微改变了一下结构,而不是使用JSONWriter和JSONArray,我只是使用JSONObjects来轻松地查询和编辑对象。

sxissh06

sxissh062#

如果JSON不存在,则插入对象到JSON中;如果存在,则更新对象,我认为有多种方法。现在我不知道您的用例限制,但最简单的一种方法将像下面的伪代码:

- get root level json object

- get input from user e.g. abc/xyz/lm=ayo

- split input first by '=' for value at index 1 and then by '/' for keys.

- Now iterate over keys
    + Find in object is key exists.
    + If key exists, get json object for that key and check for next keys inside this object.
    + If key does not exist, add keys in hierarchy and at last key, store above value.

相关问题