【发布时间】:2021-08-06 14:41:46
【问题描述】:
给定 2 个 JSON 字符串:
[
{
"id":"BA",
"description":"BrandA",
"values":[
{
"id":"CategoryA",
"description":"CategoryA"
},
{
"id":"CategoryB",
"description":"CategoryB"
},
{
"id":"CategoryC",
"description":"CategoryC"
},
{
"id":"CategoryD",
"description":"CategoryD"
},
{
"id":"CategoryE",
"description":"CategoryE"
},
{
"id":"CategoryF",
"description":"CategoryF"
},
{
"id":"CategoryG",
"description":"CategoryG"
},
{
"id":"CategoryH",
"description":"CategoryH"
}
]
},
{
"id":"BB",
"description":"BrandB",
"values":[
{
"id":"CategoryA",
"description":"CategoryA"
},
{
"id":"CategoryB",
"description":"CategoryB"
},
{
"id":"CategoryC",
"description":"CategoryC"
}
]
}
]
与
[
{
"id":"BA",
"description":"BrandA",
"values":[
{
"id":"CategoryA",
"description":"CategoryA"
},
{
"id":"CategoryC",
"description":"CategoryC"
}
]
},
{
"id":"BB",
"description":"BrandB",
"values":[
{
"id":"CategoryB",
"description":"CategoryB"
}
]
}
]
第一个是原始的。第二个是我想从原始值中删除的值。所以基本上,如果第一个和第二个 JSON 之间的品牌和类别匹配,无论元素的顺序如何,我都希望删除该匹配。
预期的结果会是这样的:
[
{
"id":"BA",
"description":"BrandA",
"values":[
{
"id":"CategoryB",
"description":"CategoryB"
},
{
"id":"CategoryD",
"description":"CategoryD"
},
{
"id":"CategoryE",
"description":"CategoryE"
},
{
"id":"CategoryF",
"description":"CategoryF"
},
{
"id":"CategoryG",
"description":"CategoryG"
},
{
"id":"CategoryH",
"description":"CategoryH"
}
]
},
{
"id":"BB",
"description":"BrandB",
"values":[
{
"id":"CategoryA",
"description":"CategoryA"
},
{
"id":"CategoryC",
"description":"CategoryC"
}
]
}
]
品牌 A 中的 A 类和 C 类以及品牌 B 中的 B 类已被删除。
根据一些研究,我使用https://github.com/wbish/jsondiffpatch.net,尝试使用它的功能,但到目前为止我还没有达到我想要的结果。此外,通过直接处理 JSON 来解决这个问题也不是必须的。如果有一个更简单的解决方案可以通过将它们转换为列表并使用诸如 LINQ 之类的东西来实现这一点,它也适用于我(尝试过,但没有设法找到进行这种比较的方法)。
提前致谢。
【问题讨论】: