如何在不重写JSON对象的其余部分的情况下就地编辑JSON元素?

时间:2011-04-02 01:55:58

标签: python xml 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对象,使“Thing One”读取“Thing 111”,同时完全按照现在的方式离开Thing Three,有没有办法做到这一点?

现在,我正在将它转换为字典,修改元素,然后将其转换回来,但这对于这种情况不适用。

我的后备位置是转换为XML并使用Regexes,但这很难看。

3 个答案:

答案 0 :(得分:2)

object_pairs_hook加载函数的json参数将允许您使用OrderedDictionary,以便您可以保留JSON对象元素的相同顺序。

答案 1 :(得分:1)

这个问题的最佳答案可能是“不要这样做”。 如果我需要这些位保持相同,我可以用BASE64或yENC编码版本替换“Thing Three”。

答案 2 :(得分:0)

我目前解决此问题的方法是要求JSON采用最紧凑的格式。没有空格,;:等 重新格式化它应该没问题,只要我们总是重新格式化为同样的东西。