Чтение вложенных JSON динамически - PullRequest
0 голосов
/ 04 марта 2020

Я сейчас пробую что-то, в чем я не уверен, если это возможно.

Я пытаюсь отобразить значения API из строки JSON (которая имеет вложенные значения) в поле базы данных, но я sh для того, чтобы оно было динамическим c.

В приведенном ниже примере YAML ключом будет имя поля базы данных, а значение поля базы данных будет где получать информацию из строки JSON («-» ограничено для вложенных значений). Я могу прочитать конфигурацию YAML, но я не понимаю, как перевести ее в код python. Если бы это было динамически c Я не представляю, сколько [] мне нужно было бы положить.

YAML: (пакет PYYAML)

employer: "properties-employer_name"
...
employee_name: "employee"

Python Код: ( Python 3,8)

json_data = { properties: {employer_name: "XYZ"}, employee: "Sam" }

employer = json_data["properties"]["employer_name"]  # How Do I add [] based on how nested the value is dynamically?
employee = json_data["employee"]

Большое спасибо!

1 Ответ

1 голос
/ 04 марта 2020

Вы можете попробовать что-то вроде этого:

def get_value(data, keys):
   # Go over each key and adjust data value to current level
   for key in keys:
     data = data[key]
   return data # Once last key is reached return value

Вы получите ключи, разделив их на '-', если у вас это есть в yaml, поэтому в моем примере я просто сохранил значение в строка и сделал это следующим образом:

employer = "properties-employer_name"
keys = employer.split('-') # Gives us ['properties', 'employer_name']

Теперь мы можем вызвать нашу функцию get_value, определенную выше:

get_value(json_data, keys)

, которая возвращает 'XYZ'

...