Поиск первого вхождения объекта в массиве с нужным ключем и значением
?key
Поиск первого вхождения объекта в массиве с нужным ключем
?+key
Поиск первого вхождения объекта в массиве с нужным ключем и возврат данных по ключу
?key#num
Поиск объекта в массиве с нужным ключем и указанием номера вхождения (по умолчанию #1)
?+key#num
Поиск объекта в массиве с нужным ключем, указанием номера вхождения и возврат данных по ключу
.key
Переход на новый уровень вложенности по ключу
.#index
Переход на новый уровень вложенности по индексу массива
Примеры использования
Поиск в массиве по ключу и значению:
importjson_inlinetest_struct= [
{
"fruit": "apple",
"yummy": "true"
},
{
"vegetable": "tomato",
"yummy": "false"
},
{
"vegetable": "cucumber",
"yummy": "false"
}
]
# Поиск первого вхождения объекта в массиве с ключем vegetable и значением cucumber,# возврат значения yummy из найденной структурыjson_inline.fetch(test_struct, '?vegetable:cucumber.yummy')
# >>> "false"# Поиск первого вхождения объекта в массиве с ключем vegetable и значением tomatojson_inline.fetch(test_struct, '?vegetable:tomato')
# >>> {"vegetable": "tomato", "yummy": "false"}
Поиск в массиве по ключу:
importjson_inlinetest_struct= [
{
"animal": "cat"
},
{
"animal": "dog"
},
{
"plant": "tomato"
},
{
"thing": "book"
}
]
# Поиск первого вхождения объекта в массиве с ключем animaljson_inline.fetch(test_struct, '?animal')
# >>> {"animal": "cat"}# Поиск второго вхождения объекта в массиве с ключем animaljson_inline.fetch(test_struct, '?animal#2')
# >>> {"animal": "dog"}# Поиск второго вхождения объекта в массиве с ключем animal,# возврат значения из найденного ключа (animal)json_inline.fetch(test_struct, '?+animal#2')
# >>> "dog"
Навигация по структурам:
importjson_inlinetest_struct= [
{'item1': 'fail'},
{'item2': 'fail'},
{'item2': [
{'item4': 'fail'},
{'item4': 'fail'},
{'item5': [
{'item7': 'fail'},
{'item7': 'fail', 'item9': [
{'item10': 'fail'},
{'item10': 'fail'},
{'item10': 'fail'},
{'item10': 'fail'},
{'item10': 'success'},
]},
{'item8': 'fail'},
]},
{'item5': 'fail'},
{'item6': 'fail'},
]},
{'item3': 'fail'}
]
# Вариант с движением по массиву через индексjson_inline.fetch(test_struct, '?+item2#2.?+item5.?item7:fail#2.item9.#4.item10')
# Более надежный вариант с поиском значения путем перебораjson_inline.fetch(test_struct, '?+item2#2.?+item5.?item7:fail#2.item9.?item10:success.item10')
# >>> "success"