在使用json.dumps()格式化响应数据时报错TypeError: Object of type Response is not JSON serializable

今天在处理接口返回数据格式化的时候报错:TypeError: Object of type Response is not JSON serializable。响应的对象不可序列化

解决:

打印出它响应结果是什么类型,发现是个对象。

然后先把响应结果转为json,再去格式化响应内容。

如下:

import requests
import json

url = ‘https://api.apishop.net/common/weather/get15DaysWeatherByArea‘
apikey = ‘chgaxvsf88f3858a15fa4426f4cbdd4d2a02b92ee0747f3‘
area = "重庆"
areaID = "101040100"
# TODO apikey前面有引号,后面就不用了
data = {
    "apiKey":apikey,
    "area":area,
    "areaID":areaID,
    }

def send_post(url,data,areaID):
    result = requests.post(url,data,areaID)
    assign = result.json()
    # todo indent缩进空格间距,sort_keys按照key来排序,ensure_ascii解码显示中文
    return json.dumps(assign,indent=4,sort_keys=True,ensure_ascii=False)   #格式化返回内容

print(send_post(url,data,areaID))

原文地址:https://www.cnblogs.com/xiamaojjie/p/11610507.html

时间: 2024-10-05 15:45:42

在使用json.dumps()格式化响应数据时报错TypeError: Object of type Response is not JSON serializable的相关文章

TypeError: Object of type 'int32' is not JSON serializable ——已解决

将模型用flask封装,返回json时报错:TypeError: Object of type 'int32' is not JSON serializable 网上搜索出的解决方案:重写json.JSONEncoder class MyEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, numpy.integer): return int(obj) elif isinstance(obj, numpy.fl

ORA-01843的错误 插入日期数据时报错

当我在SQLPLUS执行 : INSERT INTO customers ( customer_id, first_name, last_name, dob, phone ) VALUES ( 5, 'Doreen', 'Blue', '20-MAY-1970', NULL ); 出现 "ORA-01843: 无效的月份 "这个错误. Google之后找到下面的这篇文章,其中说先执行alter session set nls_date_language='american'  然后再执

statsmodels.tsa.arima_model预测时报错TypeError: int() argument must be a string, a bytes-like object or a number, not 'Timestamp'

在 python 中用 statsmodels创建 ARIMA 模型进行预测时间序列: import pandas as pd import statsmodels.api as sm df = pd.read_csv("data.csv", index_col=0, parse_dates=True) mod = sm.tsa.statespace.SARIMAX(df['price'], enforce_stationarity=False, enforce_invertibili

在vue-cli中使用axios时报错TypeError: Cannot set property 'lists' of undefined at eval

在vue-cli中使用axios拿取数据时 export default { data(){ return{ lists:{ } } }, methods: { getList(){ axios.get('https://cnodejs.org/api/v1/topics',{ }) .then(function(response){ window.console.log(response.data.data); this.lists = response.data.data; }) .catc

Python2.7 在使用BSTestRunner.py时报错TypeError: unicode argument expected, got 'str'

python3往这个库中加入了一些新的内容,使得该库在Python2.7中报错. 解决方法是将导入语句 from io import StringIO as StringIO 更换为: from io import BytesIO as StringIO   Python2.7 在使用BSTestRunner.py时报错TypeError: unicode argument expected, got 'str'

执行python manage.py makemigrations时报错TypeError: __init__() missing 1 required positional argument: 'on_delete'

在执行python manage.py makemigrations时报错: TypeError: __init__() missing 1 required positional argument: 'on_delete' 解决方法: 在连接外键时加上: on_delete=models.CASCADE 执行python manage.py makemigrations时报错TypeError: __init__() missing 1 required positional argument

flask渲染模板时报错TypeError: 'UnboundField' object is not callable

渲染模板时,访问页面提示TypeError: 'UnboundField' object is not callable 检查代码,发现实例化表单类是,没有加括号:form = NewNoteForm,加了括号后就解决了form = NewNoteForm() @app.route('/index')def index(): form = NewNoteForm notes = Note.query.all() return render_template('index.html', notes

post数据时报错:远程服务器返回错误: (400) 错误的请求。

网上查了多种方法,有不少说法,报400说是传的数据格式不对,最后的结论确实是数据格式不对. Content_Type为:application/json,配的数据格式有些麻烦,特别数多层,单层还好.例如,我本传的数据是这个的json: { "key1": { "key11": "value11", "key12": "value12" }, "key2": "value2&qu

解决python mysql插入数据时报错:TypeError: %d format: a number is required, not str

今天在使用python爬取数据并将其写入mysql数据库时,使用该如下语句: cursor.execute( "insert into comments_p_spider(owner_id,from_name,content,create_time,score,comment_level) values(%d,%s,%s,%s,%f,%s)", (p_id,str(username), str(contentStr), str(create_time),float(score), st