为了账号安全,请及时绑定邮箱和手机立即绑定

使用 JsonPath 从 JSON 数组中选择项目,其中项目不包含某个属性

使用 JsonPath 从 JSON 数组中选择项目,其中项目不包含某个属性

C#
慕码人8056858 2021-06-29 13:01:19
我有一个类似于此的 JSON 文件结构:{    "property1": 1,    "property2": 2,    "someArray": [        {            "item1": 1,            "item2": 2        },        {            "item1": 5        }    ]}我想要做的就是从不包含item2属性的数组中选择对象。我正在使用NewtonsoftJson并尝试使用 JSON 路径来做这件事。我设法选择了包含item2属性的对象,但我不知道反转逻辑的语法。// Selects all the tokens where item2 property exists.var tokens = jsonToken.SelectTokens("$.someArray[?(@.item2)]");我尝试!在过滤器部分使用这样的: $.someArray[?(!@.item2),但它抛出一个错误,说这!是意外的字符。我应该怎么做才能在这里反转选择逻辑?
查看完整描述

2 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

想出了这个方法。希望能帮助到你。工作示例

static string jonsString = (@"{

        'property1': 1,

        'property2': 2,

        'someArray': [

            {

                'item1': 1,

                'item2': 2

            },

            {

                'item1': 5,

                'item2': 2

            }

        ]

    }");


 var tokens = JObject.Parse(jonsString)["someArray"].ToObject<List<Dictionary<string, string>>>().Where(p=>!p.Keys.Contains("item2"));


        foreach (var token in tokens)

        {

           foreach(var item in token)

            {

                Console.WriteLine(item.Key +":"+ item.Value);

            }

        }

        Console.ReadLine();

输出:


item1:5


查看完整回答
反对 回复 2021-07-03
  • 2 回答
  • 0 关注
  • 458 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信