【发布时间】:2021-11-30 21:12:35
【问题描述】:
假设,我有一些复杂的 JSON:
{
"path1": {
"path1Inner1": {
"id": "id1"
},
"path1Inner2": {
"id": "id2"
}
},
"path2": {
"path2Inner1": {
"id": "id3"
},
"path2Inner2": {
"id": "id4",
"key": "key4"
}
}
}
还有一些json路径表达式的白名单,例如:
$.path1.path1Inner1$.path2.path2Inner2.key
我想在 JSON 树中只保留与“白名单”匹配的节点和属性,因此,结果将是:
{
"path1": {
"path1Inner1": {
"id": "id1"
}
},
"path2": {
"path2Inner2": {
"key": "key4"
}
}
}
即这不仅仅是通过 JSON 路径进行选择(这是一项微不足道的任务),而且节点和属性必须保持在源 JSON 树中的初始位置。
【问题讨论】:
-
能否将您的 json 样本修复为有效样本?
-
已修复,感谢您的通知。
-
我认为
JsonExtensions.RemoveAllExcept<TJToken>(this TJToken obj, IEnumerable<string> paths)从 this answer 到 How to perform partial object serialization providing "paths" using Newtonsoft JSON.NET 可以满足您的需求。你能确认一下吗? -
@ademchenko 建议的解决方案是否适合您?
-
@Peter Csala 我正在研究这两种解决方案,很快就会做出决定。
标签: json.net