этот ответ

ользую Json.Net от Newtonsoft для выбора узлов из следующих json:

{  
   "projects":[  
      {  
         "name":"Project 1",
         "client":{  
            "code":"ABC",
            "name":"Client 1"
         }
      },
      {  
         "name":"Project 2",
         "client":{  
            "code":"DEF",
            "name":"Client 2"
         }
      },
      {  
         "name":"Project 3",
         "client":{  
            "code":"GHI",
            "name":"Client 3"
         }
      }
   ]
}

Следующий фрагмент кода C #

//json is a JObject representation of the json listed above
var clients =  json.SelectTokens("$.projects[*].client");

Урожайность:

[  
   {  
      "code":"ABC",
      "name":"Client 1"
   },
   {  
      "code":"DEF",
      "name":"Client 2"
   },
   {  
      "code":"GHI",
      "name":"Client 3"
   }
]

Что здорово, теперь, что я хотел бы сделать, это фильтровать по клиентскому коду, я думаю, что

$.projects[*].client[?(@.code == 'DEF')]

будет работать, но я, очевидно, недостаточно хорошо понимаю синтаксис. Это возвращает пустой список:

 var test1 =  json.SelectTokens("$.projects[*].client[?(@.code == 'DEF')]").ToList();

И один селектор токена возвращает ноль:

  var test2 =  json.SelectToken("$.projects[*].client[?(@.code == 'DEF')]");

Я пробовал несколько разных конфигураций наhttps://jsonpath.curiousconcept.com/ и, кажется, мой синтаксис запроса действительно нарушен.

Используя реализацию Flow Communications JSONPath 0.3.4 (по ссылке выше), я могу получить клиент, используя

$..[?(@.code == 'DEF')]

тем не менее, этот синтаксис кажется недопустимым для Json.Net (или реализации Goessner на той же странице).

Кто-нибудь видит, что я делаю не так?

Ответы на вопрос(0)

Ваш ответ на вопрос