Flask 让jsonify返回的json串支持中文显示的方法

yizhihongxing

要让 Flask 中使用 jsonify 返回的 JSON串支持中文显示,需要进行如下设置:

  1. 引入 json_dumps_settings 模块,该模块可以设置序列化 JSON 数据时的一些选项。例如:ensure_ascii 参数可以指示是否对非 ASCII 字符进行转义。默认值是 True,即默认情况下会将非 ASCII 字符转义为 Unicode 对象。
from flask import Flask, jsonify
from flask.json import JSONEncoder
import json

app = Flask(__name__)

# 定义 JSONEncoder,并继承 Flask 内置的 JSONEncoder
class CustomJSONEncoder(JSONEncoder):
    def default(self, obj):
        from bson import ObjectId
        import datetime
        if isinstance(obj, ObjectId):
            return str(obj)
        if isinstance(obj, datetime.datetime):
            return obj.strftime('%Y-%m-%d %H:%M:%S')
        return super(JSONEncoder, self).default(obj)

# 修改 jsonify 函数的默认参数
@app.after_request
def after_request(response):
    if response.content_type == 'application/json':
        response.data = json.dumps(json.loads(response.data.decode('utf-8')), ensure_ascii=False)
        response.content_type = 'application/json;charset=utf-8'
    return response


@app.route('/')
def index():
    data = {'name': 'John Doe', 'age': 42, 'message': '你好'}
    return jsonify(data)
  1. 在 Flask 中设置 JSONEncoder 编码方式并返回对象,通过设置 json_encoder 参数来传递自己自定义的 JSONEncoder 对象实例,并在其 default 函数中对需要处理的属性进行处理,来解决中文返回乱码的问题。例如:
from flask import Flask, jsonify
from flask.json import JSONEncoder
import json

app = Flask(__name__)

class CustomJSONEncoder(JSONEncoder):
    def default(self, obj):
        from bson import ObjectId
        import datetime
        if isinstance(obj, ObjectId):
            return str(obj)
        if isinstance(obj, datetime.datetime):
            return obj.strftime('%Y-%m-%d %H:%M:%S')
        return super(JSONEncoder, self).default(obj)

# 指定 Flask 使用自定义的 JSONEncoder 序列化 JSON 对象
app.json_encoder = CustomJSONEncoder()

@app.route('/')
def index():
    data = {'name': 'John Doe', 'age': 42, 'message': '你好'}
    return jsonify(data)

在这两个示例中,我们使用了两种方法来解决中文返回乱码的问题。第一种方法是通过 Flask 的 after_request 钩子函数来设置 jsonify 返回的 JSON 数据的编码方式,第二种方法是在 Flask 中设置 JSONEncoder 编码方式并返回对象。具体哪种方法更适合你的应用取决于你的使用场景和需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Flask 让jsonify返回的json串支持中文显示的方法 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Python动态配置管理Dynaconf的实现示例详解

    针对“Python动态配置管理Dynaconf的实现示例详解”这个话题,我们可以分成以下几个部分进行讲解: 什么是Dynaconf Dynaconf的使用方法 示例一:使用Dynaconf管理Flask应用的配置 示例二:使用Dynaconf和Docker容器管理Django应用的配置 1. 什么是Dynaconf Dynaconf是一个Python库,旨在…

    Flask 2023年5月16日
    00
  • 查看Django和flask版本的方法

    查看Django和Flask的版本可以使用如下命令: 查看Django的版本 python -m django –version 如果你在虚拟环境下使用Django,需要先激活虚拟环境后再执行上述命令,例如: # 激活虚拟环境 source venv/bin/activate # 查看Django版本 python -m django –version …

    Flask 2023年5月15日
    00
  • Python flask框架post接口调用示例

    下面是“Python Flask框架POST接口调用示例”的完整攻略: 1. 确保flask和requests已安装 在开始之前,需要确保flask和requests已安装。如果没有安装可以在命令行中使用以下命令进行安装: pip install flask pip install requests 2. 创建Flask应用程序 创建一个Python脚本ap…

    Flask 2023年5月15日
    00
  • AJAX请求与跨域问题解决方法详解

    AJAX(异步 JavaScript 和 XML)是一种用于创建动态网页的技术,它无需页面重载即可向服务器发送请求并获取响应结果。虽然AJAX技术进一步提高了Web应用程序的交互性和性能,但它也带来了一些跨域问题。在下面的文章中,我们将探讨AJAX请求以及如何解决跨域问题。 AJAX请求的基本原理 AJAX的工作原理是通过JavaScript发起异步HTTP…

    Flask 2023年5月16日
    00
  • 使用python为mysql实现restful接口

    让我为您介绍使用Python为MySQL实现RESTful接口的完整攻略,包括两个示例说明。 环境准备 在开始这个过程之前,您必须确保以下组件已经被正确安装在您的计算机上: Python 3.6 或更高版本 (可以从官方网站下载) Flask 框架 (可以使用 pip install flask 命令安装) mysql-connector-python 模块…

    Flask 2023年5月16日
    00
  • Flask框架实现debug模式下计算pin码

    下面是详细讲解 Flask 框架实现 debug 模式下计算 pin 码的完整攻略。 1. 确认 Flask debug 模式开启 在使用 Flask 框架进行开发时,可以通过设置 Flask 的 debug 属性来开启 debug 模式。在 debug 模式中,Flask 会自动将错误信息以及堆栈跟踪信息输出到浏览器中,方便开发过程中调试。在 Flask …

    Flask 2023年5月16日
    00
  • Python编程在flask中模拟进行Restful的CRUD操作

    下面我详细讲解一下“Python编程在flask中模拟进行Restful的CRUD操作”的攻略及两个示例。 入门 首先,需要安装好 Python 和 Flask。你可以在官方文档中找到相应的安装指南: Python 安装指南 Flask 安装指南 安装好之后,我们就可以开始了。 搭建项目 首先,创建一个包含 Flask 和相应依赖项的虚拟环境。可以使用 ve…

    Flask 2023年5月15日
    00
  • Python编程中flask的简介与简单使用

    下面是关于“Python编程中Flask的简介与简单使用”的完整攻略, 1. 什么是Flask Flask是一个轻量级的Web框架,它基于Python编写并且符合WSGI(Web Server Gateway Interface)标准。它的设计思路是让开发者能够以最小的工作量来实现Web应用程序的搭建以及开发。 Flask优秀的设计结构,使得它非常容易上手。…

    Flask 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部