正则表达式匹配属性名称的 JSON 路径表达式

问题描述 投票:0回答:1
{ 
   "PORT" : {
      "Ethernet0": {
         "id": 0 
      },
      "Ethernet1": {
         "id" : 1
      }
   }
}

鉴于上述 JSON,如何获取

PORT
下与
Ethernet*
模式匹配的所有对象?我在网上或在 JSON.Net 测试用例中看到的大多数示例都展示了基于数组的示例。

我正在使用

JToken.SelectTokens
API。我认为查询应该如下所示。但这不起作用。非常感谢任何帮助!

$.PORT.[?(@ =~ /Ethernet\d+/)]

json.net jsonpath json-path-expression
1个回答
0
投票

你可以这样做

$.PORT.*
会得到port的所有孩子。

                           'PORT': {
                               'Ethernet0': { 'id': 0 },
                               'Ethernet1': { 'id': 1 }
                           }
                        }";

        JObject jObject = JObject.Parse(json);

        // Use SelectTokens to get all Ethernet objects
        IEnumerable<JToken> ethernetObjects = jObject.SelectTokens("$.PORT.*");
         
         foreach (JToken ethernet in ethernetObjects)
        {
            Console.WriteLine(ethernet);
        }
© www.soinside.com 2019 - 2024. All rights reserved.