首页 > 解决方案 > JSON get请求的疑难解答格式

问题描述

我在尝试将获取请求响应转换为我想要的格式时遇到了问题。JSON 响应的结构有点复杂,我无法将其转换为正确的格式。

这是我将 json 脚本转换为 pandas 数据框的代码:

data = pd.DataFrame.from_dict(resp_isrc.json())
data.head() 

这是我得到的 JSON 结构如下:

{"country":"US",
 "artist_name":"Frank Ocean",
 "title_name":"Provider",
 "release_date":"2017-08-25",
 "core_genre":"R&B/Hip-Hop",
 "metrics":[{"name":"ISRC w/SES On-Demand",
             "value":[{"name":"tp","value":2810},
                      {"name":"lp","value":2450},
                      {"name":"ytd","value":2740},
                      {"name":"atd","value":554267}]},

标签: pythonjsonpandasgetrequest

解决方案


在这里,您可以如何name, ip lp从 json 字典中提取数据:

import pandas as pd

data = []
for item in raw_data.get('metrics'):
    tp = 0
    lp = 0
    for name in item.get('value'):
        if 'tp' in name.values():
            tp = name.get('value')
        if 'lp' in name.values():
            lp = name.get('value')
    data.append([item.get('name'), tp, lp])

df = pd.DataFrame(data, columns=['name', 'ip', 'lp'])

输出:

                         name      ip      lp
0        ISRC w/SES On-Demand    2810    2450
1  ISRC w/SES On-Demand Audio    2735    2384
2              Digital Tracks      21      19
3   Streaming On-Demand Total  395705  348276
4   Streaming On-Demand Audio  367707  323399
5   Streaming On-Demand Video   27998   24877
6  Streaming Programmed Total     187     153

推荐阅读