Извлечь значение вложенного элемента из объекта JSON с помощью JMESPath

Я пытаюсь извлечь и преобразовать элементы из документа JSON, используя JMESPath. Вот мой тестовый массив JSON:

const search = jmespath.search;
const testData =
{
"ServiceAccount": [
    {
        "Type": "WIDGET",
        "ID": [
            {
                "OrderNum": "12345",
                "OrderTyp": "ABDCD"
            }
        ]
      }
    ]
};

Я пытаюсь извлечь значение ключа OrderNum, используя следующее выражение JMESPath, но оно возвращает null. Вот мое поисковое выражение:

const result = search(testData, 'ServiceAccount.ID.OrderNum');
console.log(result);

Почему это не работает?


person DanielAttard    schedule 06.08.2018    source источник


Ответы (1)


person    schedule
comment
Спасибо @josip. Да, ваше предложение сработало. Я не понял значения квадратных скобок. Мой образец testData представляет лишь небольшую часть гораздо большего объекта JSON, который содержит множество квадратных скобок. - person DanielAttard; 07.08.2018
comment
Привет, @josip - Вы знаете, проблемно ли использовать квадратные скобки с JMESPath? Ваше решение заключалось в удалении квадратных скобок, но это делает мой объект JSON недействительным. - person DanielAttard; 08.08.2018
comment
@DanielAttard нет, это не проблема, я не должен изменять данные вашего примера, мне потребовалось слишком мало времени, чтобы проверить проблему, моя проблема, я исправил свой ответ, теперь он работает с вашей структурой данных. С Уважением. - person josip; 08.08.2018