JSON打印来自API请求的嵌套列表

时间:2017-11-16 19:28:37

标签: python json

我正在查询与MariaDB接口的API,这就是我获取数据的方式。

{'TestTable': {'columns': ['Name', 'Id'], 'records': [['Jack', 1], ['Jill', 2]]}}

我想要实现的是在记录之前打印列,如下所示:

Name: Jack
Id: 1
Name: Jill
Id: 2

我试图获取数据并将列和记录放入不同的列表然后我的想法是使用if来匹配索引,如果匹配则打印到上面的格式,但它是错误的索引。不幸的是,经过大约5种不同的方式和3个小时后试图让它上班,我意识到我完全不知道自己在做什么:

jsonData = json.loads(reqGet.text)
columns = jsonData['TestTable']['columns']
records = jsonData['TestTable']['records']

for idx, val in enumerate(records):
    print(idx, val)

输出:

0 ['Jack', 1]
1 ['Jill', 2]

除了“你考虑过挖沟吗?”之外的任何想法都会很棒。

3 个答案:

答案 0 :(得分:1)

使用您自己的代码:

jsonData = json.loads(reqGet.text)
columns = jsonData['TestTable']['columns']
records = jsonData['TestTable']['records']

只需改变你的for循环,然后使用相同的索引进行迭代:

for i in range(len(records)):
    data = records[i] # e.g. when i=0, data = ["Jack", 1] 
    for j in range(len(columns)):
        print(col[j], data[j])

答案 1 :(得分:1)

d={'TestTable': {'columns': ['Name', 'Id'], 'records': [['Jack', 1], ['Jill', 2]]}}

for record in d['TestTable']['records']:
    for col_name, value in zip(d['TestTable']['columns'], record):
        print('{}: {}'.format(col_name, value))

将打印出来

Name: Jack
Id: 1
Name: Jill
Id: 2

答案 2 :(得分:0)

您可以将其读取为pandas数据帧:

import pandas as pd

d = {'TestTable': {'columns': ['Name', 'Id'], 'records': [['Jack', 1], ['Jill', 2]]}}

df = pd.DataFrame(data=d['TestTable']['records'],columns=d['TestTable']['columns'])

df看起来像这样:

  Name  Id
0  Jack   1
1  Jill   2

打印循环遍历行并使用值连接索引:

for idx,row in df.iterrows():
    for item in zip(row.index,row.values):
        print(': '.join([str(i) for i in item]))

结果:

Name: Jack
Id: 1
Name: Jill
Id: 2