首页 > 解决方案 > Python & Json:多行输入数据到 Json

问题描述

我的 python 代码有一个问题,需要创建多行 JSON 类型的数据。

def get_json_data(response):
 x ={}
 f ={}
 for report in response.get('reports', []):
    columnHeader = report.get('columnHeader', {})
    dimensionHeaders = columnHeader.get('dimensions', [])
    metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])
    for row in report.get('data', {}).get('rows', []):
        dimensions = row.get('dimensions', [])
        dateRangeValues = row.get('metrics', [])

        for header, dimension in zip(dimensionHeaders, dimensions):
            x[header.replace('la:','')] = dimension

            for i, values in enumerate(dateRangeValues):
                for metricHeader, value in zip(metricHeaders, values.get('values')):
                    x[metricHeader.get('name').replace('la:','')] = value

        f['dashboard'] = x
        print (json.dumps(f))
 print (json.dumps(f))

目前,它正在显示这些数据

{
  "dashboard": 
      {"bounces": "12", "userType": "Returning Visitor", "users": "3"}
}

但我想要的输出是显示这种数据

{
 "dashboard": 
     {"bounces": "10", "userType": "New Visitor", "users": "15"},
     {"bounces": "12", "userType": "Returning Visitor", "users": "3"}
}

标签: pythonjsonpython-3.x

解决方案


您的输出数据示例不是有效的 json,但这可以解决它:

def get_json_data(response):
 x ={}
 f ={'dashboad' : []}
 ...
        f['dashboard'].append(x)
        print (json.dumps(f))
 print (json.dumps(f))

仪表板值应该是一个列表,以便您可以附加不同的x结果


推荐阅读