我在<class 'dict'>
中有JSON响应。我想迭代JSON响应并形成一个表视图。以下是JSON响应示例。
{'ResultSet': {'Rows': [{'Data': [{'VarCharValue': 'cnt'}, {'VarCharValue': 'id'}, {'VarCharValue': 'val'}]}, {'Data': [{'VarCharValue': '2000'}, {'VarCharValue': '1234'}, {'VarCharValue': 'ABC'}]},{'Data': [{'VarCharValue': '3000'}, {'VarCharValue': '5678'}, {'VarCharValue': 'DEF'}]}]}}
预期输出格式:
cnt id val
2000 1234 ABC
3000 5678 DEF
只能有一行数据,或者列集可以有多行数据(对于提供的样本数据,有两行)。
答案 0 :(得分:1)
我不确定您是否使用pandas
但是您可以使用以下代码轻松地将response
dict解析为pandas.DataFrame
import pandas as pd
pd.DataFrame([[entr['VarCharValue'] for entr in r['Data']] for r in response['ResultSet']['Rows'][1:]],
columns = [r['VarCharValue'] for r in response['ResultSet']['Rows'][0]['Data']])
答案 1 :(得分:1)
我假设您想使用Pandas。由于pd.DataFrame
直接接受字典列表,因此您可以将输入字典D
重组为字典列表:
cols = [next(iter(i.values())) for i in D['ResultSet']['Rows'][0]['Data']]
d = [{col: j['VarCharValue'] for col, j in zip(cols, i['Data'])}
for i in D['ResultSet']['Rows'][1:]]
df = pd.DataFrame(d)
print(df)
cnt id val
0 2000 1234 ABC
1 3000 5678 DEF
您可能希望至少将cnt
系列转换为数字:
df['cnt'] = pd.to_numeric(df['cnt'])