Как получить узел JSON, который содержит определенное значение? - PullRequest
0 голосов
/ 13 мая 2018

Ниже приведен файл JSON, с которого я пытаюсь прочитать узлы. Я пытаюсь выполнить операцию содержит. Я не хочу использовать опцию equals в моем пути json, например: $. [? (@. Name == "Выпускник колледжа - Ford")]

Не могли бы вы помочь мне в выполнении моего требования?

[
   {
      "incentiveId" : 123,
      "autoApplied" : "false",
      "name" : "College Graduate - Ford",
      "amount" : 750,
      "expirationDate" : "2018-12-31",
      "minimumTerm" : null,
      "maximumTerm" : null,
      "groupAffiliation" : "College/Student",
      "previousOwnership" : null
   },
   {
      "incentiveId" : 456,
      "autoApplied" : "false",
      "name" : "Lease Loyalty - Ford",
      "amount" : 500,
      "expirationDate" : "2018-07-09",
      "groupAffiliation" : null,
      "previousOwnership" : "Lease Loyalty"
   },
   {
      "incentiveId" : 789,
      "autoApplied" : "false",
      "name" : "Customer Cash - Ford",
      "amount" : 1000,
      "expirationDate" : "2018-06-04",
      "groupAffiliation" : null,
      "previousOwnership" : null
   },
   {
      "incentiveId" : 222,
      "autoApplied" : "false",
      "name" : "Military - Ford",
      "amount" : 1000,
      "expirationDate" : "2018-12-31",
      "groupAffiliation" : "Military",
      "previousOwnership" : null
   }
]

Ответы [ 2 ]

0 голосов
/ 13 мая 2018
$.[?(/College/.test(@.name))]

Здесь я использую тестовый метод RegExp test () (который JSONPath скрывает за кулисами). Это выполнит операцию содержимого.

enter image description here

enter image description here

0 голосов
/ 13 мая 2018

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

colleagues = json.filter(node => node.name.match("College"))

результат:

[
  {
    "incentiveId": 123,
    "autoApplied": "false",
    "name": "College Graduate - Ford",
    "amount": 750,
    "expirationDate": "2018-12-31",
    "minimumTerm": null,
    "maximumTerm": null,
    "groupAffiliation": "College/Student",
    "previousOwnership": null
  }
]
...