Как проверить несколько ключей в JsonPath - PullRequest
1 голос
/ 28 апреля 2020

Я пытаюсь найти объект в массиве JSON, используя JsonPath. Вот мой JSON:

[
  {
    "bpm": "766",
    "time": "20:14:57",
    "confidence": "0"
  },
  {
    "bpm": "766",
    "time": "20:14:57",
    "confidence": "0"
  },
  {
    "bpm": "767",
    "time": "20:14:33",
    "confidence": "0"
  }
]

Я использую SelectToken со следующим запросом JsonPath, чтобы попытаться найти объект JSON, используя две клавиши bpm и time. Предполагается, что между bpm и time существует оператор and.

Вот мой запрос:

$.[?(@.bpm=='767',@.time=='20:14:33')]

Но я получаю ошибка, указывающая на наличие неожиданного символа , после '767'. Что я делаю не так?

1 Ответ

1 голос
/ 28 апреля 2020

В реализации JsonPath от Newtonsoft оператор and представляет собой двойной амперсанд &&, а не запятую ,. Измените выражение, как показано ниже, и оно должно работать правильно:

var array = JArray.Parse(json);
var obj = array.SelectToken("$.[?(@.bpm=='767' && @.time=='20:14:33')]");

Fiddle: https://dotnetfiddle.net/gpU56p

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...