python import json

本文介绍了JSON作为数据交换格式的基本概念,以及Python中json模块的dumps和loads函数用于字符串和对象间的转换。同时,对比了Flask框架中的jsonify与json.dumps()的区别,强调jsonify在HTTP响应中的正确Content-Type设置。
摘要由CSDN通过智能技术生成

1 概述

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。
json是最常用的数据交换格式,在python编码中需要将json字符串加载为python可以识别的python对象。
通常数据之间的传输、存储是json字符串的形式;而数据的操作、分析则是对python对象进行操作。
json字符串和python对象可以通过一下两个函数互相转换

函数描述
json.dumps将 Python 对象编码成 JSON 字符串
json.loads将已编码的 JSON 字符串解码为 Python 对象

json 类型转换到 python 的类型对照表

JSONPython
objectdict
arraylist
stringunicode
number (int)int, long
number (real)float
trueTrue
falseFalse
nullNone

python 原始类型向 json 类型的转化对照表:

PythonJSON
dictobject
list, tuplearray
str, unicodestring
int, long, floatnumber
Truetrue
Falsefalse
Nonenull

实例

以下实例将数组编码为 JSON 格式数据:

实例


import json

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

data2 = json.dumps(data)
print(data2)

以上代码执行结果为:

[{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]

使用参数让 JSON 数据格式化输出:

data2 = json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': '))
print(data2)

以上代码执行结果为:

{
    "a": "Runoob",
    "b": 7
}

实例

以下实例展示了Python 如何解码 JSON 对象:

import json

jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

text = json.loads(jsonData)
print(text)

以上代码执行结果为:

{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}

使用第三方库:Demjson

JSON 函数

函数描述
encode将 Python 对象编码成 JSON 字符串
decode将已编码的 JSON 字符串解码为 Python 对象

demjson.encode(self, obj, nest_level=0)

【Flask】json.dumps()和jsonify()的区别

一、来源不同

dumps和loads方法,来自json模块,而json模块是python中的,可以直接导入:

import json
而jsonify是flask封装的扩展包

from flask import jsonify
二、作用

①dumps()和loads()

json.dumps():把字典转成json字符串,

json.loads():把json字符串转成字典

他们操作的都是变量(变量是存储在内存中的)。

②jsonify

字典转成json字符串

三、效果不同

①json.dumps()

@app.route('/')
def index():
    data = {
        'name':'lili',
        'age':'18'
    }
    # return data # 不能返回字典
    return json.dumps(data) 
查看响应信息(Content-Type:响应内容的类型):

②jsonify

@app.route('/')
def index():
    data = {
        'name':'lili',
        'age':'18'
    }
    # jsonify的作用,就是把字典转成json字符串。
    return jsonify(data)
查看响应信息:

json.dumps() 返回的是: Content-Type:text/html 
jsonify() 返回的是:Content-Type: application/json

都是返回的json字符串(内容本质没有发生变化,只是外层包装不同),而json.dumps()就显得有些言不符实了。

四、补充

json:基于键值对的字符串,本质是字符串,但不是数据类型。

另外,python的json模块还有dump()和load()两个方法,他们作用相同,但又与dumps和loads有些区别:

json.dump()和json.load(),操作的是文件对象(具有read和write方法的对象,存在硬盘中)

附:完整代码供测试

from flask import Flask,jsonify
import json
 
 
app = Flask(__name__)
 
@app.route('/')
def index():
    data = {
        'name':'lili',
        'age':'18'
    }
    # return data # 不能返回字典
    
    # return json.dumps(data)
    return jsonify(data)
 
 
if __name__ == '__main__':
    app.run(debug=True)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值