Search first object's entry in array by key:value pair
?key
Search first object's entry in array by key
?+key
Search first object's entry in array by key and return data by key
?key#num
Search object in array by key with specify entry's count (default #1)
?+key#num
Search object in array by key with specify entry's count and return data by key
.key
Move forward in object by key
.#index
Move forward in array by index
Usage
Search in array by key and value:
>> "false"
# Search first object's entry in array with key vegetable and value tomato
json_inline.fetch(test_struct, '?vegetable:tomato')
# >>> {"vegetable": "tomato", "yummy": "false"}
">
importjson_inlinetest_struct= [
{
"fruit": "apple",
"yummy": "true"
},
{
"vegetable": "tomato",
"yummy": "false"
},
{
"vegetable": "cucumber",
"yummy": "false"
}
]
# Search first object's entry in array with key vegetable and value cucumber,# return value from yummy keyjson_inline.fetch(test_struct, '?vegetable:cucumber.yummy')
# >>> "false"# Search first object's entry in array with key vegetable and value tomatojson_inline.fetch(test_struct, '?vegetable:tomato')
# >>> {"vegetable": "tomato", "yummy": "false"}
Search in array by key:
>> {"animal": "cat"}
# Search second object's entry in array with key animal
json_inline.fetch(test_struct, '?animal#2')
# >>> {"animal": "dog"}
# Search second object's entry in array with key animal,
# return value from animal key
json_inline.fetch(test_struct, '?+animal#2')
# >>> "dog"
">
importjson_inlinetest_struct= [
{
"animal": "cat"
},
{
"animal": "dog"
},
{
"plant": "tomato"
},
{
"thing": "book"
}
]
# Search first object's entry in array with key animaljson_inline.fetch(test_struct, '?animal')
# >>> {"animal": "cat"}# Search second object's entry in array with key animaljson_inline.fetch(test_struct, '?animal#2')
# >>> {"animal": "dog"}# Search second object's entry in array with key animal,# return value from animal keyjson_inline.fetch(test_struct, '?+animal#2')
# >>> "dog"
Nested navigation:
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'}
]
# Movement variant used array index to reach needs valuejson_inline.fetch(test_struct, '?+item2#2.?+item5.?item7:fail#2.item9.#4.item10')
# Stable variant used search by array instead index movejson_inline.fetch(test_struct, '?+item2#2.?+item5.?item7:fail#2.item9.?item10:success.item10')
# >>> "success"
Поиск первого вхождения объекта в массиве с нужным ключем и значением
?key
Поиск первого вхождения объекта в массиве с нужным ключем
?+key
Поиск первого вхождения объекта в массиве с нужным ключем и возврат данных по ключу
?key#num
Поиск объекта в массиве с нужным ключем и указанием номера вхождения (по умолчанию #1)
?+key#num
Поиск объекта в массиве с нужным ключем, указанием номера вхождения и возврат данных по ключу
.key
Переход на новый уровень вложенности по ключу
.#index
Переход на новый уровень вложенности по индексу массива
Примеры использования
Поиск в массиве по ключу и значению:
>> "false"
# Поиск первого вхождения объекта в массиве с ключем vegetable и значением tomato
json_inline.fetch(test_struct, '?vegetable:tomato')
# >>> {"vegetable": "tomato", "yummy": "false"}
">
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"}
Поиск в массиве по ключу:
>> {"animal": "cat"}
# Поиск второго вхождения объекта в массиве с ключем animal
json_inline.fetch(test_struct, '?animal#2')
# >>> {"animal": "dog"}
# Поиск второго вхождения объекта в массиве с ключем animal,
# возврат значения из найденного ключа (animal)
json_inline.fetch(test_struct, '?+animal#2')
# >>> "dog"
">
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"
This open source Python project allow you to create JSON data trees using Minmup.com. I try to develop this project all the time. But feel free to use :).
RedisJSON is a Redis module that implements ECMA-404 The JSON Data Interchange Standard as a native data type. It allows storing, updating and fetching JSON values from Redis keys (documents).