Я новичок в JSON Path, поэтому это может быть проще, чем я ожидаю, если это возможно.Путь JSON: значение вывода плюс родительский иерархический
У меня есть блок JSON, который состоит из набора групп, причем каждая группа имеет набор полей. Каждая группа также имеет последовательность, как и каждое поле. Последовательность полей представляет порядок внутри группы, а групповая последовательность представляет порядок отображения самой группы.
Я сгенерировал это программно в C# из плоского списка элементов (групп и полей) с разными значениями последовательности, поэтому я хочу проверить свой вывод и, в добавок, свой алгоритм группировки.
В JSON блок выглядит (значительно упрощенный), как это:
{
"groups": [
{
"sequence": 0,
"fields": [
{
"sequence": 0
},
{
"sequence": 1
},
{
"sequence": 2
}
]
},
{
"sequence": 1,
"fields": [
{
"sequence": 0
},
{
"sequence": 1
}
]
},
{
"sequence": 2,
"fields": [
{
"sequence": 0
},
{
"sequence": 1
},
{
"sequence": 2
}
]
}
]
}
Я пытаюсь проверить это с помощью JSON Path. Для этого у меня нет инструмента, поэтому я использую jsonpath online evaluator.
Что я и добиваюсь выводится по линии этого:
'0'
'sequence' => '0'
'fields'...
'0'
'sequence' => '0'
'1'
'sequence' => '1'
'2'
'sequence' => '2'
// etc...
Другими словами, я ищу для запроса пути JSON, который может вернуть последовательность каждой группы плюс последовательность каждое поле в группе, в иерархии.
Чтобы получить последовательность групп, я использую следующее. Это прекрасно работает, и дает мне полезный выход, поскольку группы являются элементом верхнего уровня уже:
$.groups[*].sequence
Выход:
'0' => "0"
'1' => "1"
'2' => "2"
Чтобы получить последовательность полей в группах, я используя следующее. Результат здесь менее полезен, так как это плоский список, который может быть трудночитаемым, если у меня есть десятки или более полей, распределенных по нескольким группам.
$.groups[*].fields[*].sequence
Выход:
'0' => "0"
'1' => "1"
'2' => "2"
'3' => "0"
'4' => "1"
'5' => "0"
'6' => "1"
'7' => "2"
Так в конечном счете, вопрос заключается в следующем: существует ли путь запроса JSON, который позволит мне получить информацию мне нужно здесь иерархически? Или я использую неправильный инструмент для работы? Полагаю, я мог бы написать несколько строк кода в JavaScript, которые позволят мне сделать это, если придется, но похоже, что путь JSON может стать мощным инструментом для изучения, поэтому, если я могу это сделать, я кое-что узнал.
try '$ .groups [*].[sequence] ' – fingerpich