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

3 投票
3 回答
989 浏览
提问于 2025-04-16 14:56

我现在收到几个对象,它们是以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对象中元素的顺序不变。

撰写回答