Dr_Elvis
@Dr_Elvis
В гугле забанен

Как подставить путь к элементу из строки?

Привет!
Есть скрипт на вход котором подается JSON и путь к нужному элементу
например:
path = "['fields']['components']['name']"
json = {'fields': {'components': {'id': '10437', 'name': 'Bug'}}}

далее если вызвать такой код, то не проходит
print(json[path])
Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    print(json[path])
KeyError: "['fields']['components']['name']"

сам path не известен пока не придет в скрипт. как сделать чтобы можно было вытащить по пути значение?
  • Вопрос задан
  • 178 просмотров
Решения вопроса 1
kentuck1213
@kentuck1213
path = "fields.components.name".split('.')
json = {'fields': {'components': {'id': '10437', 'name': 'Bug'}}}

for p in path:
    json = json[p]
print(json)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
import re

value = json
for key in re.findall("'(.*?)'", path):
    value = value[key]

или

import re
from functools import reduce

value = reduce(lambda c, k: c[k], re.findall("'(.*?)'", path), json)
Ответ написан
Комментировать
path = "['fields']['components']['name']"
json = {'fields': {'components': {'id': '10437', 'name': 'Bug'}}}

print (eval('json' + path + ''))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы