2011-04-02 33 views
2

我正在接收幾個對象,目前使用JSON,並且需要能夠修改其中的部分對象,而將後面的部分完全保留,空間對於空間來說是相同的。如何在不重寫JSON對象的其餘部分的情況下就地編輯JSON元素?

例如,想象一下,我收到了以下對象

 
{ 
"example": [ 
      { 
       "Name": "Thing One", 
       "Line2": "more text. ABCD\nEFG" 
      }, 
      { 
       "Name": "Thing Two", 
       "Line2": "XYZZY..." 
      } 
      { 
       "Name": "Thing Three", 
       "Line2": [ 
         { 
           "SubElement": "Sub1", 
           "SubElement": "Sub2" 
         ] 
      } 
     ] 
} 

如果我想JSON對象,使得「一事一」讀「物111」,而留下的東西三它到底是現在的樣子,有沒有辦法做到這一點?

現在,我將其轉換爲一個字典,修改元素,然後將其轉換回,但這並不對這種情況下很好地工作。

我的回退位置是轉換爲XML並使用Regexes,但這很醜。

+0

我想另一種方式我可以解決這個問題將得到一個元素的文本表示,然後做一個查找/原字符串替換..這仍然不是很安全... – 2011-04-02 01:59:15

+0

是每一個這樣的替換總是會完全相同的長度?如果沒有,你的問題就沒有意義了。 – 2011-04-02 02:01:10

+1

我希望能夠取代Thing One和Thing Two,同時保持Thing Three元素不變,所以THING THREE部分保留相同的MD5,即使整個文件MD5將改變。 – 2011-04-02 02:54:53

回答

2

加載函數json的參數object_pairs_hook將允許您使用OrderedDictionary,以便您可以保留JSON對象元素的相同順序。

1

此問題的最佳答案可能是「不要這樣做」。 如果我需要這些位保持相同,我可以用BASE64或yENC編碼的版本替換「Thing Three」。

+0

編輯刪除「我寧願找到...」的答案。 – 2011-04-05 18:18:48

+0

您不需要提供狀態。堆棧溢出維護所有更改的完整歷史記錄。只需做出改變並繼續前進。 – 2011-04-05 19:14:56

+0

在json文件中保留空白是有正當理由的。可讀性是其中一個原因。 – 2011-07-18 07:39:35

0

我目前的解決方案是要求JSON採用最緊湊的格式。沒有空格,;:等 重新格式化它應該沒問題,只要我們總是重新格式化爲相同的東西。

+0

那麼你會相當打印它閱讀,然後再次壓縮它? – heltonbiker 2012-03-05 17:02:10

相關問題