簡體   English   中英

如何在 json 文件中編輯和添加嵌套數據?

[英]How can I edit and add nested data in json file?

這只是為了測試,但基本上它的作用是當它接收到一條消息時(消息就像 abc/xyz/pq=yo),然后像這樣:- {"root":[{"abc":[{"xyz":[{"pq":"yo"}]}]}]}但是我想要的是,例如已經存在一個 json,如果有人想添加像 abc/xyz/lm=ayo 這樣的值如果它不存在,那么它會將其添加到現有的 json 中。 如果有人想更新像 abc/xyz/pq=ayo 這樣的東西,它就會更新它。 也就是說,如果存在一個孩子,那么它會更新一個值,否則它會創建它。

如果您想知道為什么 json 甚至為單個孩子也有一個數組,即因為如果我們想向特定孩子添加數據,我們可以輕松添加。

請記住,這只是我在 readFileResult() 中的測試代碼,但我想更改整個結構。

更新:- 因為我知道用戶想要添加數據時的確切路徑,所以我可以輕松地將數據添加到該路徑,但問題是如何檢查如何檢查是否存在數據? 因為我在 Arrays('{"root":[{"abc":[{"xyz":[{"pq":"yo"}]}]}]}') 中嵌套了孩子,我無法循環每個孩子並解析它,因為它會消耗大量資源和時間。

另一個更新:-我已將結構更改為 rfc8259 以擺脫這些數組。 這應該更簡單,但仍然在“更新”數據方面苦苦掙扎。

我找到了另一種更好的方法來解決這個問題,我稍微改變了結構。 而不是使用 JSONWriter 和 JSONArray,我只是使用 JSONObjects 來輕松地查詢和編輯對象。 你可以看看這個。

對於在 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. 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM