JSONPath первое вхождение сборщика

У меня есть такой файл json:

{
  "cards": [
    {
      "artist": "Steve Argyle",
      "images": {
        "mtgimage": "http://mtgimage.com/set/pMPR/ponder.jpg"
      },
    },
    {
      "artist": "Mark Tedin",
      "images": {
        "gatherer": "http://gatherer.wizards.com/Handlers/Image.ashx?type=card&multiverseid=139512",
        "mtgimage": "http://mtgimage.com/set/LRW/ponder.jpg"
      },
    },
    {
      "artist": "Dan Scott",
      "images": {
        "gatherer": "http://gatherer.wizards.com/Handlers/Image.ashx?type=card&multiverseid=190159",
        "mtgimage": "http://mtgimage.com/set/M10/ponder.jpg"
      },
    }
  ]
}

Я хотел бы получить от него первую ссылку «сборщик», используя JSONPath. Я пробовал "$..gatherer[0]", но это не работает. Однако "$..gatherer" дает оба экземпляра:

[
   "http:\/\/gatherer.wizards.com\/Handlers\/Image.ashx?type=card&multiverseid=139512",
   "http:\/\/gatherer.wizards.com\/Handlers\/Image.ashx?type=card&multiverseid=190159"
]

Как получить только первый? (без получения последнего в коде, поэтому только с использованием строки jsonpath.)

(Проверено с помощью http://jsonpath.curiousconcept.com/ и в моей программе.)


person The Oddler    schedule 21.06.2015    source источник


Ответы (1)


Вам может понадобиться промежуточный шаг для сохранения массива

var gatherers = $..gatherer;  //however this gets it, I'm not sure
var first = gatherers[0];

это может сработать.

person Toby Allen    schedule 21.06.2015
comment
Это действительно должно работать. Однако я ищу решение только для jsonpath. Идея состоит в том, что пользователи могут вводить свои собственные строки jsonpath. Я ожидаю, что нужно будет использовать первую ссылку на сборщик. Поэтому я надеюсь на решение, которое не требует кода и может быть выполнено только с помощью строки jsonpath. - person The Oddler; 21.06.2015