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

Python 如何在不重写JSON对象其余部分的情况下就地编辑JSON元素?,python,xml,json,Python,Xml,Json,我正在接收几个对象,目前是JSON格式的,需要能够修改其中的一些部分,同时将后面的部分完全保留,以空间换空间,以位换位,完全相同 例如,假设我正在接收以下对象 { "example": [ { "Name": "Thing One", "Line2": "more text. ABCD\nEFG" }, { "Name": "Th

我正在接收几个对象,目前是JSON格式的,需要能够修改其中的一些部分,同时将后面的部分完全保留,以空间换空间,以位换位,完全相同

例如,假设我正在接收以下对象

{ "example": [ { "Name": "Thing One", "Line2": "more text. ABCD\nEFG" }, { "Name": "Thing Two", "Line2": "XYZZY..." } { "Name": "Thing Three", "Line2": [ { "SubElement": "Sub1", "SubElement": "Sub2" ] } ] } { “示例”:[ { “名字”:“第一件事”, 第2行:“更多文本。ABCD\nEFG” }, { “名字”:“第二件事”, “第2行”:“XYZZY…” } { “名字”:“第三件事”, “第2行”:[ { “SubElement”:“Sub1”, “子元素”:“Sub2” ] } ] } 如果我想修改JSON对象,使“ThingOne”读取“Thing111”,而让ThingThree保持现在的状态,有什么方法可以做到这一点吗

现在,我正在将其转换为字典,修改元素,然后再将其转换回,但这在这种情况下不起作用


我的退路是转换为XML并使用正则表达式,但这很难看。
json
load函数的
object\u pairs\u hook
参数将允许您使用
OrderedDictionary
,这样您就可以保持json对象元素的相同顺序。

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

我目前解决这个问题的方法是要求JSON采用最紧凑的格式。没有空格,;:,等等。
重新格式化应该是可以的,只要我们总是重新格式化为相同的内容。

我想我可以解决的另一个方法是获取元素的文本表示,然后在原始字符串中进行查找/替换。这仍然不是很安全……每一次这样的替换是否总是完全相同的长度?如果不是,你的问题是没有什么意义。我希望能够在保留Thing Three元素不变的情况下,替换Thing Three和Thing Three元素,这样Thing Three部分保留相同的MD5,即使整个文件MD5会发生变化。@Colin Davis:人们怎么知道呢?每个子对象的某个地方都有单独的MD5吗?如果是,简单地说有什么问题吗修复所有对象并提供所有修订的MD5?是的,正在存储每个子元素的MD5。编辑以删除“我宁愿查找…”。。。“回答。您不需要提供状态。堆栈溢出会维护所有更改的完整历史记录。只需进行更改并继续。在json文件中保留空白是有充分理由的。可读性是一个原因。然后您会对其进行预打印以便读取,然后再次压缩它吗?”?