jsonpath: Как получить доступ к ключу в текущем объекте, если в имени ключа есть «дефис»?

#javascript #json #jsonpath

#javascript #json #jsonpath

Вопрос:

Привет, я использую javascript-реализацию выражения пути JSON, доступного по этой ссылке

Из приведенного ниже JSON я пытаюсь получить список объектов из массива «дефисный ключ», где «внутренний дефисный ключ» = 1. Я попытался использовать для этого выражение пути в формате json «$.hyphened-key [?(@.[‘inner-hyphenedkey’] == 1 )]«. Но это выдает ошибку. Код находится в jsfiddle.

 {
"nonhyphenedKey": [
                        {
                            "inner-hyphenedkey": 1
                        }, 
                        {
                            "innernonhyphenedkey": 1
                        }
                  ],
"hyphened-key": [
                         {
                            "inner-hyphenedkey": 1
                         },
                         {
                            "inner-hyphenedkey": 2
                         } 
                         {
                            "innernonhyphenedkey": 1
                         }
                ]
};
 

Пожалуйста, помогите, как это можно решить.

Большое спасибо

Ответ №1:

В реализации javascript ваше выражение фильтра ( ?(...) блок) оценивается как обычный javascript. Поэтому вы должны использовать обычный javascript в этом выражении. Помните, @ это ссылка на текущий узел.

 $.hyphened-key[?(@['inner-hyphenedkey'] == 1)]