Response 类型的对象不可 JSON 序列化

Ned*_*sha 8 python json pandas

我正在尝试将 json 从 api 转换为 python 中的数据帧。我运行以下代码:

import requests
import pandas as pd
import simplejson as json

params = {
  "api_key": "abc",
  "format": "json"
}
r = requests.get('https://www.parsehub.com/api/v2/runs/ttx8PT-EL6Rf/data', params=params)

data = json.dumps(r) #convert to json
data = json.loads(data)
dataFrame = pd.DataFrame.from_dict(data) #convert json to dataframe
print(dataFrame)
Run Code Online (Sandbox Code Playgroud)

我得到了这些错误:

Traceback (most recent call last):
  File "C:/Users/User/PycharmProjects/test/convert jsontodataframe.py", line 11, in <module>
    data = json.dumps(r) #convert to json
  File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\simplejson\__init__.py", line 395, in dumps
    return _default_encoder.encode(obj)
  File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\simplejson\encoder.py", line 296, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\simplejson\encoder.py", line 378, in iterencode
    return _iterencode(o, 0)
  File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\simplejson\encoder.py", line 273, in default
    o.__class__.__name__)
TypeError: Object of type Response is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

你能帮我吗。有没有其他方法可以将我的 json api 转换为 python 中的数据帧?请帮我。

Dan*_*iel 0

删除这一行:

data = json.dumps(r) #convert to json
Run Code Online (Sandbox Code Playgroud)

这会将 python 字典转换为字符串,而不是像您在代码中注释的那样将字符串转换为 json 对象。

您的代码应如下所示:

import requests
import pandas as pd
import simplejson as json

params = {
  "api_key": "abc",
  "format": "json"
}

r = requests.get('https://www.parsehub.com/api/v2/runs/ttx8PT-EL6Rf/data', params=params)

data = json.loads(r.json)
dataFrame = pd.DataFrame.from_dict(data) #convert json to dataframe
print(dataFrame)
Run Code Online (Sandbox Code Playgroud)