如何在不重写其余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对象中的“Thing One”改成“Thing 111”,而“Thing Three”保持完全不变,有什么办法可以做到吗?
现在,我是把它转换成字典,修改元素,然后再转换回去,但这样在这个情况下效果不好。
我考虑的备选方案是转换成XML,然后使用正则表达式,但这样做太麻烦了。
3 个回答
0
我现在解决这个问题的方法是要求JSON数据必须是最紧凑的格式,也就是说不能有空格、换行符等多余的字符。只要我们每次重新格式化的时候都保持成一样的格式,那这样做是可以的。
1
这个问题的最佳答案可能是“别这么做。”如果我需要保持数据完全一样,我可以把“第三件事”换成它自己经过BASE64或yENC编码后的版本。
1
json
加载函数中的object_pairs_hook
参数可以让你使用OrderedDictionary
,这样你就可以保持JSON对象中元素的顺序不变。