【发布时间】:2022-01-06 18:52:53
【问题描述】:
所以,我正在尝试通过返回 JSON 的 api 调用导入 Dynatrace 数据。我将 JSON 作为字典和列表(多个嵌套)的字典导入。
我想要做的是最终得到我以后可以用来写入 csv 的行。
我认为通过示例会更有意义。
导入 JSON 的示例(缩短了空间,但我留下了 3 个我需要的“部分”):
dtrace_results = json.loads(http_response.content)
看起来像:
{'totalCount': 41, 'nextPageKey': None,
'result': [{'metricId': 'builtin:service.response.time',
'data': [{'dimensions': ['SERVICE-039D18D190DF8EE1'],
'dimensionMap': {'dt.entity.service': 'SERVICE-039D18D190DF8EE1'},
'timestamps': [1641491760000, 1641491820000, 1641491880000],
'values': [733, None, 724]},
{'dimensions': ['SERVICE-CF6C91BB030BB3AC'],
'dimensionMap': {'dt.entity.service': 'SERVICE-CF6C91BB030BB3AC'},
'timestamps': [1641491760000, 1641491820000, 1641491880000],
'values': [60951.354609929076, 56788.070796460175, 57866.69565217391]},
{'dimensions': ['SERVICE-BF03689183860CA9'],
'dimensionMap': {'dt.entity.service': 'SERVICE-BF03689183860CA9'},
'timestamps': [1641491760000, 1641491820000, 1641491880000],
'values': [69, 74, 78.5]}
]}]}
经过一些操作使其更接近我想要的位置:
for row in dtrace_results['result'][0]['data']:
row.pop('dimensions')
打印上述结果:(为清楚起见添加了项目符号)
- {'dimensionMap':{'dt.entity.service':'service-039d190d190df8ee1'},'timestamps':[1641492060000,1641492120000,1641492120000,16414141414141414141800,164114141414,33,33,14,33,143,3,3,4,33,,,, ]}
- {'dimensionMap': {'dt.entity.service': 'SERVICE-CF6C91BB030BB3AC'}, “时间戳”:[1641492060000、1641492120000、1641492180000、 1641492240000], '值': [70568.0193548387, 64320.80487804878,55929.954545454544, 57868.15151515151]}
- {'dimensionMap': {'dt.entity.service': 'SERVICE-BF03689183860CA9'}, 'timestamps': [1641492060000, 1641492120000, 1641492180000, 1641492240000, 101, 101, 7, 1, 7 ]}
我想从上面得到的基本上是,在这个例子中,上面每行有 4 行,就像这样(数字只是为了清楚起见,结果中不需要):
- SERVICE-039D18D190DF8EE1,1641492060000,无
- SERVICE-039D18D190DF8EE1,1641492120000,1495.3333333333333
- SERVICE-039D18D190DF8EE1,1641492180000,1451.5
- SERVICE-039D18D190DF8EE1,1641492240000,无
- ...后面是其他行
提前感谢您的帮助。
【问题讨论】:
标签: json python-3.x dictionary