извлечь вложенный элемент в списке jsons - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть вложенный JSON, структурированный следующим образом. Для каждого json я хочу итеративно извлекать данные из разных уровней - «StreamId» на первом уровне, затем в «Summary_breakdown» извлекать «TaskID» (т.е. TaskID_1, TaskID_2), а внутри каждого «TaskID» извлекать все элементы, кроме «tools_items»поскольку он слишком длинный и может вызвать проблемы внутри фрейма данных.

Я хочу записать его обратно в виде словаря и в конечном итоге проанализировать его в фрейме данных.

{
     "success": true,
     "resource": {
         "StreamId": "xyz",
         "Summary_Measures": {
             "Summary_Report": {
                "Total_Cost": 7000,
                "Total_hours": 6087,
                "Summary_breakdown": {
                        "TaskID_1": {
                            "Task_details": "abc",
                            "Task_cost": 300,
                            "Task_hours": 87,
                            "tools_items": "an_extremely_long_string"
                            },
                        "TaskID_2": {
                            "Task_details": "defgyh",
                            "Task_cost": 400,
                            "Task_hours": 6000,
                            "tools_items": "another_extremely_long_string"
                      }
                   }
                }
           },
       }
}

Мне удалось сгенерироватьсписок URL-адресов и сохраните ответы json в списке, но я не могу извлечь слой и параметр «Task_ID» внутри каждого «Task_ID» во второй части моего сценария, начиная с «responseitem». Я пытался обойти слой «Task_ID», но код все еще не работает. Любые решения и предложения приветствуются!

import json
import pandas as pd
from urllib.request import urlopen

stream_id = ['sdfhef', 'VVqdhi']
myurl_link = [] 
for id in stream_id:
    endpoint = "https://~/%s/~" % id
    myurllink.append(endpoint)
    myjslist = []
    for link in myurl_link:
        g = urlopen(link).read().decode('UTF-8')
        g_resp = json.loads(g) 
        myjslist.append(g_resp)


responseitem = []
for item in myjslist:
    stream = item['resource']['StreamId']
    taskdetails = item['resource']['Summary_Measures']['Summary_Report']['Summary_breakdown'][0]['Task_details']
    taskcost = item['resource']['Summary_Measures']['Summary_Report']['Summary_breakdown'][0]['Task_cost']
    taskhours = item['resource']['Summary_Measures']['Summary_Report']['Summary_breakdown'][0]['Task_hours']
    responseitem.append({'taskdetails':taskdetails, 'taskcost':taskcost, 'taskhours': taskhours})

with open('responseitem.json', 'a') as f:
    json.dump(responseitem, f)
    f.write("\n")



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...