假设我有以下 2 个 json 对象:
JSON A:
{
"Field A":"1",
"Field B":"2",
"Field D":"Something",
"Field E":"6"
}
JSON B:
{
"Field A":"1",
"Field B":"2",
"Field C":"3",
"Field D":"Different"
}
示例函数:function (jsonstringA, jsonstringB)
示例(如果使用 JSON A 和 JSON B 作为参数):
返回一个新的 JSON 对象,其中包含:
{
"Field C":"3", // because function sees jsonstringB had no "Field C"
"Field D": "Different" // sees jsonstringB had a different value for "Field D"
}
请注意,它使用 jsonstringA 作为比较的基础,因此该函数仅返回缺少的字段和 jsonStringB 的值。这就是不返回“Field E”及其值的原因。
如果可能想出一个返回包含已更改值的 json 对象的函数,最好的方法是什么?
我尝试过什么:我尝试通过手动指定我要检查的字段来进行比较,但我想要一些东西,要求我不要对“字段”进行硬编码,因为它非常低效,每次我添加JSON B 的一个新字段,我必须在我正在寻找的字段中进行硬编码……这就是为什么我正在寻找不那么痛苦的东西。
原文由 Rolando 发布,翻译遵循 CC BY-SA 4.0 许可协议
创建这样的函数并不难。只需遍历第二个对象中的每个字段,如果它不存在于第一个对象中或值与第一个不同,则将该字段放入返回对象中。
您可以在 此演示页面 上看到它的运行情况。