JSON Low Code - Extract data inline
Project description
JSON Inline
Low code JSON to extract data in one line
ENG
Installation
pip install json-inline
Usage Rules
Modificator | Description |
---|---|
?key:value |
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:
import json_inline
test_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 key
json_inline.fetch(test_struct, '?vegetable:cucumber.yummy')
# >>> "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"}
Search in array by key:
import json_inline
test_struct = [
{
"animal": "cat"
},
{
"animal": "dog"
},
{
"plant": "tomato"
},
{
"thing": "book"
}
]
# Search first object's entry in array with key animal
json_inline.fetch(test_struct, '?animal')
# >>> {"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"
Nested navigation:
import json_inline
test_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 value
json_inline.fetch(test_struct, '?+item2#2.?+item5.?item7:fail#2.item9.#4.item10')
# Stable variant used search by array instead index move
json_inline.fetch(test_struct, '?+item2#2.?+item5.?item7:fail#2.item9.?item10:success.item10')
# >>> "success"
RU
Установка
pip install json-inline
Правила использования
Модификатор | Описание |
---|---|
?key:value |
Поиск первого вхождения объекта в массиве с нужным ключем и значением |
?key |
Поиск первого вхождения объекта в массиве с нужным ключем |
?+key |
Поиск первого вхождения объекта в массиве с нужным ключем и возврат данных по ключу |
?key#num |
Поиск объекта в массиве с нужным ключем и указанием номера вхождения (по умолчанию #1) |
?+key#num |
Поиск объекта в массиве с нужным ключем, указанием номера вхождения и возврат данных по ключу |
.key |
Переход на новый уровень вложенности по ключу |
.#index |
Переход на новый уровень вложенности по индексу массива |
Примеры использования
Поиск в массиве по ключу и значению:
import json_inline
test_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 и значением tomato
json_inline.fetch(test_struct, '?vegetable:tomato')
# >>> {"vegetable": "tomato", "yummy": "false"}
Поиск в массиве по ключу:
import json_inline
test_struct = [
{
"animal": "cat"
},
{
"animal": "dog"
},
{
"plant": "tomato"
},
{
"thing": "book"
}
]
# Поиск первого вхождения объекта в массиве с ключем animal
json_inline.fetch(test_struct, '?animal')
# >>> {"animal": "cat"}
# Поиск второго вхождения объекта в массиве с ключем animal
json_inline.fetch(test_struct, '?animal#2')
# >>> {"animal": "dog"}
# Поиск второго вхождения объекта в массиве с ключем animal,
# возврат значения из найденного ключа (animal)
json_inline.fetch(test_struct, '?+animal#2')
# >>> "dog"
Навигация по структурам:
import json_inline
test_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"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
json_inline-0.1.7.tar.gz
(5.4 kB
view details)
Built Distribution
File details
Details for the file json_inline-0.1.7.tar.gz
.
File metadata
- Download URL: json_inline-0.1.7.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1bbd2a474c5ccbbe11d13f6bd35ab0c53da3b32ec9449164593f0b0b2e111865 |
|
MD5 | 75a397b8dea3a6621e0316e45e85d28e |
|
BLAKE2b-256 | 6027f903bf12f35b1aa80c467c8be4985fb887f74971501aa9adb873e13a6371 |
File details
Details for the file json_inline-0.1.7-py2.py3-none-any.whl
.
File metadata
- Download URL: json_inline-0.1.7-py2.py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc253f799d97403ebed019d31ca7ed8c4b9485a3375e44f99f1f307c04a013f5 |
|
MD5 | 522097f462b270e912a8e2f339d61d7a |
|
BLAKE2b-256 | cde7692b4c8c4a992a357d14a08fdf16417b7838c9e51dec68c387c25ccb797a |