Flask 让jsonify和json.dumps返回的json数据支持中文显示

本文介绍如何在Flask应用中正确显示中文字符的JSON数据,包括修改json默认的ascii编码及浏览器字符编码设置。

flask中,用jsonify和json.dumps返回json数据到浏览器中显示时,显示不出中文,如下图描述:

用jsonify返回数据:


返回结果:


用json.dumps返回数据:


返回结果:


虽然不影响接口的读取,但是可读性太差,于是研究了一下怎么直接显示成中文。最后找到了解决方案如下。

解决办法:

第一步:如果用jsonify返回数据,就用下面的代码将json默认的ascii编码改成False


如果是用json.dumps返回数据,也是将json默认的ascii编码改成False,只是代码不一样


第二步:将浏览器的字符编码改成UTF-8编码




解决之后中文就能正常显示了~



### json.dumps flask.jsonify 的区别 `json.dumps` 是 Python 标准库 `json` 中提供的一个函数,用于将 Python 对象序列化为 JSON 字符串。它是一个通用的工具,适用于所有需要将数据转换为 JSON 格式的场景。例如: ```python import json data = {'name': 'lili', 'age': '18'} json_str = json.dumps(data) ``` 在 Flask 应用中,如果使用 `json.dumps` 返回 JSON 字符串,Flask 会将其作为普通的字符串响应返回,响应头中的 `Content-Type` 会是 `text/html` 或 `text/plain`,而不是 `application/json`。这可能导致客户端无法正确解析响应内容 [^4]。 另一方面,Flask 提供了 `jsonify` 函数,专门用于在视图函数中返回 JSON 响应。`jsonify` 不仅会将传入的 Python 对象序列化为 JSON 字符串,还会自动设置响应头中的 `Content-Type` 为 `application/json`,确保客户端能够正确识别响应内容的类型 [^3]。例如: ```python from flask import Flask, jsonify app = Flask(__name__) @app.route('/') def index(): data = {'name': 'lili', 'age': '18'} return jsonify(data) ``` 此外,`jsonify` 还支持直接返回字典对象,而不需要手动调用 `json.dumps`。如果直接返回字典,Flask 会抛出错误,因为视图函数期望返回的是一个字符串、响应对象或其他可转换为响应的对象,而不是字典 [^3]。 `jsonify` 在内部使用了 `json.dumps`,但它进一步封装了响应对象的创建过程,简化了开发流程。它不仅处理了数据的序列化,还处理了响应头的设置,使得开发者可以专注于业务逻辑,而不必担心底层细节 [^1]。 ### 总结 - `json.dumps` 是 Python 的标准库函数,用于将 Python 对象序列化为 JSON 字符串,但不会自动设置响应头。 - `jsonify` 是 Flask 提供的函数,除了序列化数据外,还会自动设置 `Content-Type: application/json`,确保客户端正确解析响应内容。 - 在 Flask 应用中,推荐使用 `jsonify` 来返回 JSON 响应,因为它简化了响应对象的创建头信息的设置 [^2]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值