2011-04-02 5 views
2

現在、JSONにあるいくつかのオブジェクトを受信して​​いますが、後半の部分はスペース、スペースはスペース、ビットはビット、まったく同じままですが、その一部を変更できる必要があります。例えば残りのJSONオブジェクトを書き換えずに、JSON要素をインプレースで編集するにはどうすればよいですか?

、私はそれが今で丁度道シングスリーを残したまま、「シング一つは」、「シング111」を読み出すことをJSONオブジェクトには、このような場合、私はオブジェクト

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

次受けた想像してみてそれを行う方法はありますか?

今は辞書に変換して要素を変更してから元に戻しますが、このシナリオではうまくいきません。

私のフォールバックの位置は、XMLに変換してRegexesを使用することですが、それは醜いです。

+0

私はそれが要素のテキスト表現を取得し、次に元の文字列で置き換えを行うことが解決できる別の方法を推測する..それはまだ非常に安全ではない... –

+0

そのような置換は常に正確に同じ長さですか?そうでない場合、あなたの質問はほとんど意味がありません。 –

+1

私はThing One要素をそのままにしてThing OneとThing Twoを置き換えることができるようにしたいので、THING THREEセクションはMD5ファイル全体が変更されても同じMD5を保持します。 –

答えて

2

jsonロード関数の引数object_pairs_hookは、OrderedDictionaryを使用して、JSONオブジェクトの要素の同じ順序を保持できるようにします。

1

この質問に対する最良の答えは、「しないでください」ということです。 ビットを同じにする必要がある場合は、「Thing Three」をBASE64またはyENCでエンコードされたバージョンに置き換えることができます。

+0

"私はむしろ見つけるだろう..."答えを削除するように編集しました。 –

+0

ステータスを入力する必要はありません。スタックオーバーフローは、すべての変更の完全な履歴を保持します。ただ変更を加えて移動してください。 –

+0

jsonファイルに空白を入れるのに有効な理由があります。可読性がその理由の1つです。 –

0

この問題に対する私の現在の解決策は、JSONを最もコンパクトな形式にすることです。空白なし、:、など 同じフォーマットに再フォーマットしている間は、フォーマットを変更するのは問題ありません。

+0

それからあなたはそれを読んだ後にもう一度圧縮するためにそれを事前印刷しますか? – heltonbiker

関連する問題