Python和Json:将多行输入数据转换为Json

3

我有一个关于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"}
}
3个回答

2

您的输出数据示例不是有效的JSON格式,但是以下更改可以修复它:

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

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

谢谢,你真是太棒了。感谢帮我解决问题。 - Abdul Rahim

2
你的格式应该像这样。
df1 = {
    "dashboard":
        [{"bounces": "10", "userType": "New Visitor", "users": "15"},
         {"bounces": "12", "userType": "Returning Visitor", "users": "3"}]
}

否则会出现错误。

感谢您对结构错误的帮助。但这不是答案。 - Abdul Rahim
是的,我知道。Netwave已经给出了答案。我不想再发同样的内容。 - Nihal

0

你无法构建这种结构,因为Python不允许这样做。 只需在终端中键入此命令,您就会了解有关结构错误的信息。

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

非常感谢您强调了JSON代码结构错误的问题,谢谢。 - Abdul Rahim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接