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

要让 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 搭建Web站点之Web服务器与Web框架

    Python是一种非常流行的编程语言,可以用来开发各种不同目的的应用程序。本文将介绍如何使用Python来搭建Web站点,具体包括Web服务器和Web框架的实现。 Web服务器 Web服务器是一种用于接收和响应HTTP请求的软件程序。Python提供了许多不同的Web服务器,包括内置的BaseHTTPServer、SimpleHTTPServer等。其中最流…

    Flask 2023年5月16日
    00
  • 在Python的Flask中使用WTForms表单框架的基础教程

    下面我将为您讲解在Python的Flask中使用WTForms表单框架的基础教程。 一、安装WTForms 在Python命令行中使用pip命令安装WTForms框架,方法如下: pip install WTForms 二、使用WTForms 1.创建表单类 首先,我们需要创建一个表单类来描述我们的表单。在这个表单类中,我们需要定义表单的字段类型、验证规则以…

    Flask 2023年5月16日
    00
  • Python脚本实现格式化css文件

    当我们编写较大的CSS文件时,往往会出现文件结构不清晰、代码难以维护等问题,而格式化CSS文件可以使代码更易读、易维护。本文将介绍如何使用Python脚本来格式化CSS文件。 步骤1:安装cssutils库 CSS文件格式化需要使用到cssutils库,可以通过pip install cssutils来进行安装。如果你的Python环境没有安装pip,那么需…

    Flask 2023年5月16日
    00
  • flask框架中勾子函数的使用详解

    现在我将为您详细讲解“flask框架中勾子函数的使用详解”的完整攻略,包含两条示例说明。以下是完整攻略: 什么是勾子函数 勾子函数(Hook Function),也叫回调函数(Callback Function),指的是在程序执行不同阶段,程序员预先设定并注册的、可以被主程序调用执行的函数。在 Flask 框架中,所有与请求和响应相关的操作都与 Reques…

    Flask 2023年5月15日
    00
  • Flask SQLAlchemy(操作数据库)使用方法详解

    Flask SQLAlchemy是一个Python库,提供ORM(Object-Relational Mapping)功能,用于在Flask应用程序中访问和操作关系数据库。在本篇文章中,我们将详细介绍如何利用Flask SQLAlchemy进行数据库操作,并提供实际的代码示例。 安装Flask SQLAlchemy 要使用Flask SQLAlchemy,首…

    Flask 2023年3月13日
    00
  • Flask框架的学习指南之用户登录管理

    标题:Flask框架的学习指南之用户登录管理 1.概述 Flask是一个非常流行的Python Web框架,灵活可扩展。在Web应用程序中,用户登录管理是必不可少的一项功能。Flask框架提供了快速构建用户认证和授权的工具。 2.安装Flask 在开始使用Flask之前,需要先安装Flask。可以使用pip来安装Flask: pip install Flas…

    Flask 2023年5月15日
    00
  • Python的Flask框架中配置多个子域名的方法讲解

    下面我就为您讲解Python的Flask框架中配置多个子域名的方法以及两个示例说明。 配置多个子域名的方法讲解 在Flask中配置多个子域名需要用到Flask中的蓝图(Blueprint)。蓝图是 Flask 中一个很重要的概念,它提供了一种组织 Flask 应用的方式,可以让开发者把应用分成一些比较小的部分。 具体步骤: 首先,我们需要在Flask应用中定…

    Flask 2023年5月16日
    00
  • Django和Flask框架优缺点对比

    Django和Flask是两个最常用的Python web框架,它们极大地简化了Web应用程序的开发。然而,它们之间有许多不同点。在本攻略中,我们将深入探讨Django和Flask的优缺点对比,让你更好地了解它们的差异,从而有针对性地进行选型。 Django框架优缺点对比 优点 强大的ORM Django附带了自己的ORM,它可以让你很容易地与数据库交互。O…

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