Flask 的 jsonify 理解

article/2025/9/12 12:05:22

文章目录

    • python 代码
    • 解决
    • 原因
      • Content-Type的区别

python 代码

# -*- coding:utf-8 -*-
from flask import Flask, jsonifyapp = Flask(__name__)urls = [{'id': 1,'title': 'python','description': 'https://www.python.org/'},{'id': 2,'title': 'flask','description': 'https://flask.palletsprojects.com/en/1.1.x/'}
]@app.route('/api/urls', methods=['GET'])
def get_tasks():return jsonify({'urls': urls})if __name__ == '__main__':app.run(debug=True)
  • 问题:Flask 框架里,可以使用 jsonify 返回 json 数据,但是为什么不使用 Python 自带的 json 模块返回 JSON 数据呢?

解决

  • jsonify 在处理数据过程中,对数据做 JSON 序列化处理时,用的是 itsdangerous 模块里的 JSON ,通过源代码可以看出,基本是一样的。
  • flask 框架引入过程代码:
from itsdangerous import json as _json
  • 首先会尝试引入simplejson,如果没有安装这个模块,则引入 Python 原生模块json。
try:import simplejson as json
except ImportError:import json

原因

  • jsonify存在的有意义是Content-Type的不一样。

Content-Type的区别

  1. 使用jsonify序列化。
  • 如本篇的开篇代码:
    在这里插入图片描述
  1. 使用json模块序列化
# -*- coding:utf-8 -*-
from flask import Flask
import jsonapp = Flask(__name__)urls = [{'id': 1,'title': 'python','description': 'https://www.python.org/'},{'id': 2,'title': 'flask','description': 'https://flask.palletsprojects.com/en/1.1.x/'}
]@app.route('/api/urls', methods=['GET'])
def get_tasks():return json.dumps({'urls': urls})if __name__ == '__main__':app.run(debug=True)

在这里插入图片描述

  • 总结:接口既然返回的是 json 数据,那么自然要指明 Content-Type 是 application/json , 这样做是符合 HTTP 协议的规定的,这就是使用 jsonify 的原因之一 。

http://chatgpt.dhexx.cn/article/lokFlkfB.shtml

相关文章

Flask中jsonify和json.dumps用法以及区别(简单案例)

环境:python3.6, Flask1.0.3 flask提供了jsonify函数供用户处理返回的序列化json数据, 而python自带的json库中也有dumps方法可以序列化json对象. 其二者的区别,写个简单的案例实测一下便见分晓。 from flask import Flask from flask im…

const常量函数详解

在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定。const 可以用来修饰成员变量和成员函数。 const常量与指针 const int *p1与const int *p2的顺序不同,但是他们指向的值都不能改变,上述代码说明虽然指向的值不能…

C++const函数的运用:深度解析const函数的魅力

C 深度解析const函数的魅力 1. C const函数的基本概念(Basic Concepts of const Functions in C)1.1 const函数的定义与特性(Definition and Characteristics of const Functions)1.2 const函数的使用场景(Usage Scena…

const 用法

const 用法 const 修饰变量,这个变量被称为常变量,不能被修改,但本质上还是一个变量 #通过指针改变num的值 int main() {int num 10;int* p #*p 20;printf("%d ", num);return 0; }#这里num被 const修饰本来不能被修改…

const成员函数

const成员函数 const修饰成员函数的时候,const需要放在成员函数的后面,不能放在一开始,如果放在一开始的话,那么const其实是在修饰成员函数的返回值,而不是在修饰成员函数了 const成员函数中不能修改成员变量 普通成员…

const函数

const是衡量一个程序员是否老道的一个标准,除了修饰变量之外,还可以修饰函数,主要有以下几种形式 const int& fun(int& a); //修饰返回值 int& fun(const int& a); //修饰形参 int& fun(int& a) const{} //const成员…

梳理c++ const 修饰函数

const是衡量一个程序员是否老道的一个标准,除了修饰变量之外,还可以修饰函数,主要有以下几种形式 const int& fun(int& a); //修饰返回值 int& fun(const int& a); //修饰形参 int& fun(int& a) const{} //const成员…

C++基础——const成员函数

目录 一.Const成员函数 1.定义: 2.格式: 3.代码示例: .h文件: definition.cpp文件 特性: 例: 那么const对象既可以调用非const型成员函数吗? 问题3.const成员函数内可以调用其它…

JAVA输入/输出流详细讲解

应用程序经常需要访问文件和目录,读取文件信息或写入信息到文件,即从外界输入数据或者向外界传输数据,这些数据可以保存在磁盘文件、内存或其他程序中。在Java中,对这些数据的操作是通过I/O技术来实现的。所谓I/O技术,…

java输出语句_java输入输出语句是什么

在java中,输入语句为“Scanner对象.next()系列方法”,例“Scanner对象.nextLine()”表示输入字符串;输出语句为“System.out.println()”、“System.out.print()”等。 对于经常上机刷题的来说,首先得解决输入输出方法,Java的输入输出流在Java学习过程的后面部分才会接触,…

Java输入输出处理

活动地址:CSDN21天学习挑战赛 🍁博客主页:👉不会压弯的小飞侠 ✨欢迎关注:👉点赞👍收藏⭐留言✒ ✨系列专栏:👉21天挑战回顾java ✨知足上进,不负野心。 &am…

java 输入输出总结(牛客、笔试、机试)

因为踩过坑,所以特别整理了一下,发现其实不少小伙伴同样都是这样,特别简单小结一下,java网上笔试的时候OJ的一些要求的实例 1 单行输入 // 本题为考试单行多行输入输出规范示例,无需提交,不计分。 import j…

java输入输出的方法

java输入输出 目录 一、控制台输入输出 二、文件读写 一、控制台输入输出 java控制台的输入输出主要依赖于scanner类,使用Scanner scannernew Scanner(System.in)获取了控制台输入的字段,其中system.in就表示这个对象读取的是控制台。 public static …

java读取输出流_Java输入输出流

1什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作。Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 Ja…

Java 输入输出流学习总结

文章目录 前言:为什么要有输入输出流一、Java 的标准输入输出标准输入 System.in标准输出 System.out程序 exp8_3:简单的输入输出 二、输入输出流框架三、输入输出流类的应用课本程序 exp8.4改写 exp8.4(1)改写 exp_8.4(2) 四、RandomAccessFile 类输入输…

java 输入输出流

java I/O流 在java中所有数据都是使用流读写的。流是一组有序的数据序列,将数据从一个地方带到另一个地方。根据数据流向的不同,可以分为输入(Input)流和输出(Output)流两种。 为什么要使用输入输出流 例…

Java(2)-Java IO输入输出流

一.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读…

Java——输入输出

本篇主要介绍Java的输入与输出,当然,这里说的是控制台下的输入与输出,窗口程序的设计将会再后续篇章中有详细说明。   Java的输出很简单,调用System.out.println()即可打印输出你想要输出的内容。我们之前也已经看到过。调用pr…

C语言之static关键字详解

目录 前言: 一、几个概念 1.变量 2.局部变量和全局变量 3.变量的作用域 4.变量的生命周期 二、static关键字的作用 三、static关键字修饰局部变量 四、static关键字修饰全局变量 五、static关键字修饰函数 写在最后: 前言: static&am…

static关键字你真的懂了吗?

文章目录 static关键字1、Java中的static1.1 static关键字的定义和性质1.2 实例变量与静态变量1.2.1 实例变量1.2.2 静态变量 1.3 静态代码块1.4 *实例语句块 / 代码块1.5 static总结1.5.1 对java语句的解读1.5.2 什么时候定义为静态的? 2、C/C中的static2.1 局部变…