Python3 json模块之编码解码方法讲解

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,在接口数据开发和传输中非常常用。

Python3中我们利用内置模块json解码和编码JSON对象。json模块提供了四个功能:

dumpsdumploadsload

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

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

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

load  把文件打开从字符串转换成数据类型

dumps编码

我们利用 dumps 将Python对象编码为 JSON对象 ,当然 dumps 只完成了序列化为str,而 dump 必须传文件描述符,将序列化的str保存到文件中。

编码字典

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

示例结果:

{"www": 1, "jb51.net": 2, "Python3": 3}

编码列表

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

示例结果:

[100, "Python3", {"www": 1, "jb51.net": 2, "Python3": 3}]

编码字符串

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

示例结果:

"Python3"

格式化输出JSON

将下面的数组,转化为标准的json格式

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

示例结果:

[
 "Python3",
 100,
 {
  "Python3": 3,
  "jb51.net": 2,
  "www": 1
 },
 true
]

参数解析: 

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

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

转换关系对照表

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

Python JSON
dict object
list, tuple array
str, unicode string
int, long, float number
True true
False false
None null

loads解码

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

比如我们用来解码上个示例的数据

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

示例结果:

<class 'list'>

['Python3', 100, {'Python3': 3, 'jb51.net': 2, 'www': 1}, True]

可以看到我们成功对上个例子中的JSON对象进行了解码,并且最终的解码结果为Python列表对象类型,符合Python对象JSON对象对照表的结果。

总结

Python3中的json解析和编码模块json使用起来非常简单, 功能也非常齐全,完全能够满足我们日常的需求。更多关于Python json模块解析和编码的文章请点击下面的相关链接

(0)

相关推荐

  • Python中re模块的常用方法总结

    前言 正则表达式作为计算机科学的一个概念,通常被用来检索.替换那些符合某个规则的文本.正则表达式是对字符串操作的一种逻辑公式,用事先定义好的规则字符串对字符串进行过滤逻辑处理. re模块总结,正则表达式.在网络爬虫中对于数据定位,学习regex也很有必要 常用方法 re.compile() 将指定的正则表达式模式编译为正则表达式对象,可用于匹配和搜索 re.match() 该方法用于匹配字符串开头的模式 re.serach() 该方法用于匹配出现在字符串中任意位置的模式 re.findall()

  • python 中os模块os.path.exists()的用法说明

    os即operating system(操作系统),Python 的 os 模块封装了常见的文件和目录操作. os.path模块主要用于文件的属性获取,exists是"存在"的意思,所以顾名思义,os.path.exists()就是判断括号里的文件是否存在的意思,括号内的可以是文件路径. 举个栗子: user.py为存在于当前目录的一个文件 输入代码: import os path = os.path.exists('user.py') print(path) 输出结果: True P

  • python requests模块的使用示例

    为什么使用requests: 支持使用Cookie保持会话 支持文件上传 支持自动确定响应内容的编码 对用户来说比较人性化 模拟get请求: 获取token # 使用微信公众平台举例 get_param_dict={ "grant_type":"**************", "appid":"**************", "secret":"**************", }

  • python 绘图模块matplotlib的使用简介

    上周对线上某几个磁盘进行了fio硬盘性能测试,测试完成之后的结果需要绘制成图像展示出来.我在官网上查找了一下fio自带的命令fio_generate_plot和fio2gnuplot工具的用法,找到了图像的绘制方法,在某一个单一的场景下,确实可以使用这两个工具来进行硬盘性能图像绘制,但是问题是,如果要对比多个场景下绘制出来的图像的差异,fio自带的绘图工具实现起来就有些困难了,但是确实也能实现.例如下图: 如图所示为磁盘iodepth不变,numjobs在(1,8,16)三种不同的场景下绘制出来

  • python urllib.request模块的使用详解

    python的urllib模块提供了一系列操作url的功能,可以让我们通过url打开任意资源.其中比较常用的就是request模块,本篇主要介绍requset模块. urllib子模块 urllib.request 打开或请求url urllib.error 捕获处理请求时产生的异常 urllib.parse 解析url urllib.robotparser 用于解析robots.txt文件 robots.txt是一种存放于网站根目录下文本文件,用来告诉网络爬虫服务器上的那些文件可以被查看.又被

  • python使用timeit时间模块

    1. timeit.timeit(stmt='pass', setup='pass', timer=<default timer>, number=default_number) timeit() 函数有四个参数,每个参数都是关键字参数,都有默认值. stmt:传入需要测试时间的代码,可以直接传入代码表达式或单个变量,也可以传入函数.传入函数时要在函数名后面加上小括号,让函数执行,如 stmt = 'func()' . setup:传入 stmt 的运行环境,如 stmt 中使用到的参数.变量

  • Python模块介绍与使用详细讲解

    模块的相关概念 1. 什么是模块 模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块 模块的英文名叫: modules,一个模块中可以包含N个函数,也可以包含类等等. 在Python中一个扩展名为.py的文件就是一个模块. 2. 使用模块的好处 方便其他程序和脚本的导入并使用 避免函数名和变量的冲突 提高代码的可维护性 提高代码的可重用性 模块的使用 1. 自定义模块 创建一个.py文件,名称尽量不要与Python自带的标准模块名称相同,需要见名知意. a) 方法一

  • python glom模块的使用简介

    工欲善其事,必先利其器!我们想要更轻松更有效率地开发,必须学会一些"高级"技能.前不久看到一位 Python 高僧的代码,其中使用了一个短小精悍的模块,我认为还蛮有用的,今天分享给大家. 这个模块就叫 glom ,是 Python 处理数据的一个小模块,它具有如下特点: 嵌套结构并基于路径访问 使用轻量级的Pythonic规范进行声明性数据转换 可读.有意义的错误信息 内置数据探测和调试功能 看起来比较抽象,对不对?下面我们用实例来给大家演示一下. 安装 作为 Python 内置模块,

  • Python实现学生管理系统的代码(JSON模块)

    构思 学生管理系统 应该包含老师注册登录 管理学生信息(增删改查)还有数据持久化 因为数据存入JSON文件 增删改查都需要读取和修改文件 所以需要一个读写文件的方法文件 file_manager 密码加密可以用到哈希模块文件 tools 老师和学生的类文件 model 程序入口(主页)文件index 核心增删改查文件 student_manager file_manager.py """ Project: ClassStudent Creator: 猫猫 Create tim

  • python tkinter模块的简单使用

    由于一些小原因,被迫开始了tkinter一次实战演练.在此做一些记录,总结以及给自己留一些轮子哈哈哈哈哈哈 tkinter 是 Python 的一个GUI库,本次实战完全使用tkinter,不牵扯任何其他第三方库的使用. 1.任务要求 画一个具有上传病患信息以及图片功能的用户界面 2.简单设计 由于时间紧迫且只要求可视化,背后没有必要太过精细,所以简单设计思路是,利用下拉列表实现病患信息的填写,用text显示选择图片的路径. 表面上的组件包括:两个Button:选择目录 SELECT THE D

  • python os模块和fnmatch模块的使用介绍

    一.先介绍一下os模块 import os   print(os.getcwd()) # E:\python\test\python_models # 获取当前的目录     print(os.listdir(".")) # ['oop.py', 'python_argparse.py', 'python_click.py', 'python_os.py', 'python_re.py', 'python_requests.py', 'xx.py', '__init__.py'] #

随机推荐