调用接口返回中文数据时,发现原本是中文的数据全显示十六进制数,查了些资料,记录下解决方法。
只显示进制数
- 在设置中加入如下配置就行。
app.config['JSON_AS_ASCII'] = False
使用配置参数的好处是返回给客户端的content-type
是json
。
- 或者使用json模块的
json.dumps(ensure_ascii=False)
返回json数据。
但返回客户端的content-type
显示为html
。
image.png
总结:显示的是json数据返回的类型却不是json类型,这样不太好。所以选择第一种方法比较好。
完整代码:
from flask import Flask, request, jsonify
import requests
app = Flask(__name__)
@app.route("/")
def weather():
city = request.args.get('city')
# 和风天气api
base_url = 'https://free-api.heweather.net/s6/weather/now?location=%s&key=5aba2b45d2a64c079f9dd20a22faccab' % city
resp = requests.get(url=base_url)
json_list = resp.json()['HeWeather6']
weather_data = json_list[0]['basic']
return jsonify(weather_data)
if __name__ == '__main__':
app.config['JSON_AS_ASCII'] = False
app.run(host="localhost", port=8000, debug="true")
网友评论