【发布时间】:2020-05-20 21:58:45
【问题描述】:
我想比较两个 JSON 对象并返回另一个对象,其中仅包含一个 JSON 对象中缺少的属性。例如:
json1 = {
"name": "ABCD",
"hobbies": [
{
"water_hobby1": "Rafting",
"water_hobby2": "swimming",
},
{
"hobby3": "Singing",
"hobby4": "Drawing",
}
]
}
json2 = {
"name": "ABCD",
"hobbies": [
{
"hobby3": "Singing",
"hobby4": "Drawing",
}
]
}
预期输出:
json = {
"hobbies": [
{
"water_hobby1": "Rafting",
"water_hobby2": "swimming",
},
]
}
假设我写的是 json1.getDiff(json2);我希望生成的 json 仅包含 json2 中缺少并存在于 json1 中的属性。属性和属性本身的嵌套是动态的。
我的实际 JSOn 如下:
{
"property1": 0,
"property2": "value1",
"property3": [
{
"name": "value2",
"property4": [
{
"property5": 0,
"name": "value3",
"porperty6": 0,
"property7": [
{
"name": "",
"property": 0,
"property": value,
"property": "value",
"property": "value",
"property": "value"
},
{
"name": "",
"property": 0,
"property": value,
"property": "value",
"property": "value",
"property": "value"
},
{
"name": "",
"property": 0,
"property": value,
"property": "value",
"property": "value",
"property": "value"
},
{
"name": "",
"property": 0,
"property": value,
"property": "value",
"property": "value",
"property": "value"
},
{
"name": "",
"property": 0,
"property": value,
"property": "value",
"property": "value",
"property": "value"
},
{
"name": "",
"property": 0,
"property": value,
"property": "value",
"property": "value",
"property": "value"
},
{
"name": "",
"property": 0,
"property": value,
"property": "value",
"property": "value",
"property": "value"
},
{
"name": "",
"property": 0,
"property": value,
"property": "value",
"property": "value",
"property": "value"
}
]
},
{
Many Such Objects With nested array and objects
}]
},
{
"name": "value",
"property4": []
}
}
假设我的源 JSON 包含 Property7[0] 对象,但我的另一个 JSON 对象不包含 Property7[0] 对象。我只想返回 Property7[0] 作为我的输出。我下面的代码返回整个 Property7 数组,它显然不包含 property7[0] 对象。但这不是我想要的。代码没有遍历数组 Property7 中的对象。一些帮助我实现这一点是我所寻求的。
【问题讨论】:
-
我尝试了
https://stackoverflow.com/questions/24876082/find-and-return-json-differences-using-newtonsoft-in-c中提出的解决方案,但这会返回 json1 并删除了 water_hobby 对象。我使用的 json 比我给出的示例复杂得多,我无法弄清楚如何只返回丢失的对象。