Python3 JSON编码解码方法详解

 更新时间:2019年09月06日 14:37:10   作者:桂木  
这篇文章主要介绍了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, 'python': 2, 'Python3': 3}
jdata = json.dumps(odata)
print(jdata)

编码列表示例结果:

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

示例结果:

[100, "Python3", {"www": 1, "python": 2, "Python3": 3}]

编码字符串

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

示例结果:

"Python3"

格式化输出JSON 

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

参数解析:

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

示例结果:

[
  "Python3",
  100,
  {
    "Python3": 3,
    "python": 2,
    "www": 1
  },
  true
] 

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

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

转换关系对照表

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

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

loads解码

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

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

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

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

示例结果:

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

总结

Python3中的json解析和编码模块json使用起来非常简单, 功能也非常齐全,完全能够满足我们日常的需求。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python实现导弹自动追踪代码实例

    Python实现导弹自动追踪代码实例

    这篇文章主要介绍了Python实现导弹自动追踪代码实例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11
  • Python之multiprocessing包使用及说明

    Python之multiprocessing包使用及说明

    multiprocessing是 Python标准库中的的一个包,支持进程间的并发执行,它提供了一个类似 threading 的 API,允许创建新的进程,每个进程有自己的 Python 解释器器和内存空间,通过使用multiprocessing,开发者可以利用多核或多 CPU 的系统,进行 CPU 密集型任务
    2026-05-05
  • Python中处理无效数据的详细教程

    Python中处理无效数据的详细教程

    无效数据是指不符合数据收集目的或数据收集标准的数据,这些数据可能来自于不准确的测量、缺失值、错误标注、虚假的数据源或其他问题,本文就将带大家学习Python中如何处理无效数据,感兴趣的同学可以跟着小编一起来学习
    2023-06-06
  • Python的Django框架中模板碎片缓存简介

    Python的Django框架中模板碎片缓存简介

    这篇文章主要介绍了Python的Django框架中模板碎片缓存,包括给cache标签传递参数等方法,需要的朋友可以参考下
    2015-07-07
  • 5种Python统计次数方法技巧

    5种Python统计次数方法技巧

    这篇文章主要给大家分享的是5种Python统计次数方法技巧,文章主要包括字典 dict 统计、collections.defaultdict 统计、List count方法、集合(set)和列表(list)统计、collections.Counter方法,感兴趣的小伙伴一起进入下面文章内容吧
    2021-11-11
  • python使用phoenixdb操作hbase的方法示例

    python使用phoenixdb操作hbase的方法示例

    这篇文章主要介绍了python使用phoenixdb操作hbase的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • 深入讲解Python命令行解析模块argparse

    深入讲解Python命令行解析模块argparse

    Python 提供了一个解析命令行参数的标准库 argparse,可以让我们轻松编写用户友好的命令行接口,接下来我们就来详细介绍一下argparse 的使用方法吧
    2023-06-06
  • python opencv实现证件照换底功能

    python opencv实现证件照换底功能

    这篇文章主要为大家详细介绍了python opencv实现证件照换底功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Python 常用的安装Module方式汇总

    Python 常用的安装Module方式汇总

    这篇文章主要介绍了Python 常用的安装Module方式汇总,需要的朋友可以参考下
    2017-05-05
  • Pygame实战练习之纸牌21点游戏

    Pygame实战练习之纸牌21点游戏

    21点想必是很多人童年时期的经典游戏,我们依旧能记得抱个老人机娱乐的场景,下面这篇文章主要给大家介绍了关于如何利用python写一个简单的21点小游戏的相关资料,需要的朋友可以参考下
    2021-09-09

最新评论