Python3内置模块之json编码解码办法解说

简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格局,它根据ECMAScript的一个子集。 JSON选用彻底独立于言语的文本格局,这些特性使JSON成为抱负的数据交换格局,易于人阅览和编写,一起也易于机器解析和生成,在接口数据开发和传输中十分常用。

Python3中咱们运用内置模块json解码和编码JSON目标。json模块供给了四个功用:dumps、dump、loads、load

dumps 把数据类型转化成字符串 

dump  把数据类型转化成字符串并存储在文件中

loads 把字符串转化成数据类型  

load  把文件翻开从字符串转化成数据类型

dumps编码

咱们运用 dumps 将Python目标编码为 JSON目标 ,当然 dumps 只完结了序列化为str,而 dump 有必要传文件描述符,将序列化的str保存到文件中。

编码字典

import json 
odata = {'www': 1, 'vztug.com': 2, 'Python3': 3}
jdata = json.dumps(odata)
print(jdata)

示例成果:

{"www": 1, "vztug.com": 2, "Python3": 3}

编码列表

import json 
ldata = [100, 'Python2', {'www': 1, 'vztug.com': 2, 'Python3': 3}]
jdata = json.dumps(ldata)
print(jdata)

示例成果:

[100, "Python3", {"www": 1, "vztug.com": 2, "Python3": 3}]

编码字符串

import json 
sdata = 'Python3'
jdata = json.dumps(sdata)
print(jdata)

示例成果:

"Python3"

格局化输出JSON

将下面的数组,转化为规范的json格局

import json 
ldata = ['Python3', 100, {'www': 1, 'vztug.com': 2, 'Python3': 3}, True]
jdata = json.dumps(ldata, sort_keys=True, indent=4)
print(jdata)

示例成果:

[
    "Python3",
    100,
    {
        "Python3": 3,
        "vztug.com": 2,
        "www": 1
    },
    true
]

参数解析: 

sort_keys=True 那么字典的输出会以键的次序排序

indent=4 表明缩进为4,假如 indent 是一个非负整数或许字符串,那么 JSON 数组元素和目标成员会被美化输出为该值指定的缩进等级。

转化联系对照表

下面为Python原始类型向JSON目标的转化对照表:

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

loads解码

咱们运用 loads 用于解码 JSON目标 。解码成果即与之对应的 Python目标 类型。当然 loads 只完结了反序列化, load 只接纳文件描述符,完结读取文件和反序列化。

比方咱们用来解码上个示例的数据

import json 
jsondata = '''
[
    "Python3",
    100,
    {
        "Python3": 3,
        "vztug.com": 2,
        "www": 1
    },
    true
]
'''
ldata = json.loads(jsondata)
print(type(ldata))
print(ldata)

示例成果:

<class 'list'>
['Python3', 100, {'Python3': 3, 'vztug.com': 2, 'www': 1}, True]

可以看到咱们成功对上个比如中的JSON目标进行了解码,而且终究的解码成果为Python列表目标类型,契合Python目标JSON目标对照表的成果。

总结

Python3中的json解析和编码模块json运用起来十分简略, 功用也十分彻底,彻底可以满意咱们日常的需求。


上一篇:Python3 列表list兼并的4种办法
下一篇:Python3 pickle模块的运用详解

PythonTab微信大众号:

Python技能交流合作群 ( 请勿加多个群 ):

群1: 87464755

群2: 333646237

群3: 318130924

群4: 385100854