JSON Path Extraction

У меня есть данные JSON, в которых есть элемент массива с именем "References" . Этот массив "References" дополнительно имеет такие элементы, как TypeName, Id и элемент Called Attributes, который дополнительно имеет такие элементы, как name и type. Возможные значения для TypeName: Сотрудники, Офисы, Оборудование и т. д.

"References": [
        {
          "TypeName": "Employees",
          "Attributes": {
            "Type": "9t59c6ghn1l4y81nvu7a",
            "Name": "WH-3",
                }
        },
        {
          "TypeName": "Hardware",
          "Attributes": {
            "Name": "rz2j8c85kbl3add5vmb5",
                      }
        },
        {
          "TypeName": "Organization",

          "Attributes": {
            "Type": "4qww1im1o6w4xm4ehlkm",
            "Name": "Training"
          }
        },
]

Я хочу извлечь путь для элемента TypeName из массива "Ссылки". Например: я хочу извлечь путь для организации TypeName и далее для атрибутов этого TypeName.

Спасибо!

1 ответ

Вы можете легко извлечь атрибуты организации, однако ваш JSON не является допустимым JSON, поэтому вам нужно сначала исправить это в зависимости от того, насколько простит анализатор, который вы используете. Весь документ должен иметь объект или массив в корне, и после последних свойств некоторых объектов в документе есть дополнительные запятые. Вот фиксированный документ:

{
    "References": [
        {
            "TypeName": "Employees",
            "Attributes": {
                "Type": "9t59c6ghn1l4y81nvu7a",
                "Name": "WH-3"
            }
        },
        {
            "TypeName": "Hardware",
            "Attributes": {
                "Name": "rz2j8c85kbl3add5vmb5"
            }
        },
        {
            "TypeName": "Organization",
            "Attributes": {
                "Type": "4qww1im1o6w4xm4ehlkm",
                "Name": "Training"
            }
        }
    ]
}

Чтобы получить атрибуты организации, вы можете использовать следующий путь JSON

$..References[?(@.TypeName=='Organization')].Attributes

Я проверил это с помощью онлайн-инструмента запросов JSON здесь: http://www.jsonquerytool.com/sample/jsonpathwhereselect

Другие вопросы по тегам