Добавление файла данных json в другой распространенный файл json в Python - PullRequest
0 голосов
/ 21 февраля 2019

Прежде всего, я ищу подобные вопросы, но ни один не смог ответить на мой вопрос выше.Я надеюсь, что вы, ребята, могли бы посоветовать мне дальше.

Я запускаю сценарий для извлечения данных из списка сетевого оборудования и сохранения значения в файл json, например ниже

json-1 = {
  "channel": "scanner",
  "action": "create_device",
  "table": "U2",
  "device":[]
}
data = "device_name","ip_address","lldp_neighbors"

ЗатемСтрока кода используется для получения данных devicename, ipaddress и lldp, возврата значения, его извлечения и сохранения в списке данных выше.Например,

my[data[0]] = connection.find_prompt().rstrip('>') #to get hostname
my[data[1]] = device['ip'] #to get ip address
my[data[2]] = connection.send_command('show lldp neighbors | display xml') 
#to get lldp data in xml format

json1["device"].append(my) #append my data to device

Для моих [data [2]] соседи lldp вернут данные в формате xml и преобразуют эти данные xml в файл формата json, как показано ниже

ДЕТАЛИ СОСЕДЕЙ LLDP: -

"lldp_neighbors": [
{
"local-port": "xe-3/0/4.0",
"parent-interface": "ae31.0",
"chassis-id": "b0:c6:9a:63:80:40",
"port-info": "xe-0/0/0/0.0",
"system-name": "host.jnpr.net"
}

Мои вопросы здесь, как я могу добавить детали соседей lldp выше (данные json) к temp [data [2]] json-1 так, чтобы окончательный файл json json.dump (json-1), fp) сгенерированный будет как ниже, вложенный json файл

{
  "channel": "scanner",
  "action": "create_device",
  "table": "U2",
  "device": [
    {
      "device_name": "rtr1.wer",
      "ip_address": "1.1.1.1",
      "lldp_neighbors": [
      {
       "local-port": "xe-3/0/4.0",
       "parent-interface": "ae31.0",
       "chassis-id": "b0:c6:9a:63:80:40",
       "port-info": "xe-0/0/0/0.0",
       "system-name": "host.jnpr.net"
      }
    ]
  ]
}

Я действительно надеюсь, что кто-то может указать мне правильный путь ... я застрял ... пожалуйста, помогите мне.Спасибо.

1 Ответ

0 голосов
/ 21 февраля 2019

Ваш data должен быть типом словаря, теперь тип кортежа


data = "device_name","ip_address","lldp_neighbors"
# change to
data = {"device_name": "","ip_address": "","lldp_neighbors": []}
my[data["device_name"]] = connection.find_prompt().rstrip('>') #to get hostname
my[data["ip_address"]] = device['ip'] #to get ip address
my[data["lldp_neighbors"]] = connection.send_command('show lldp neighbors | display xml') 
...