简介

json全名是JavaScript Object Notation(即:Javascript对象标记)。它是JavaScript的子集,JSON是轻量级的文本数据交换格式。前端和后端进行数据交互,其实就是js和python进行数据交互,但json数据是不能被python识别的,故需要转码,即序列化和反序列化。而今天学习的模块json就是实现这一功能。在python中是自带这个模块的,故不需要自己另外安装。

json数据与python数据区别

json数据的名称必须用双引号来包括,这也是json数据的特点。下面是两幅两个数据的转化参照图。

参照上面两幅图可以发现,python的集合类型是不能参与转化到json的,且json数据也没有set类型。

json方法

首先我们用json的一个魔法方法all来查看json的方法有哪些?

import json
print (json.__all__)
['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONDecodeError', 'JSONEncoder']

可以看到上面共有7个方法,下面讲解下其中四个最常用的方法。

  • dumps:此方法是将python对象转换为json对象,实现序列化过程。下面是一个小小实例。
import json
data = {
'name' : 'wl',
'age' : 18,
'tu' : (1,2,3),
'li' : ['a','b','c'],
'kong' : None,
'shi' : True,
'dict' : {1:2,3:4}
}
json_data = json.dumps(data)
print(json_data)
{"shi": true, "age": 18, "tu": [1, 2, 3], "kong": null, "li": ["a", "b", "c"], "name": "wl", "dict": {"1": 2, "3": 4}}
  • loads:此方法刚好与dumps方法相反,它实现的是序列化的反过程。
python_data = json.loads(json_data)
print(python_data)
print(type(python_data))
{'tu': [1, 2, 3], 'name': 'wl', 'li': ['a', 'b', 'c'], 'shi': True, 'dict': {'3': 4, '1': 2}, 'kong': None, 'age': 18}
<class 'dict'>

可以发现,python的列表和json的数组可以相互转换,但python的元组与json的数组并不是,元组只能转换成json的数组,而数组却转不回去,其只能转成python的列表。

  • dump:与dumps不同的是,此方法是在文件里进行操作序列化的过程,故常常配合于with open语句。
with open('data.json','w+') as f:
json.dump(data,f)
f.seek(0)
print(f.read())
{"dict": {"1": 2, "3": 4}, "name": "wl", "tu": [1, 2, 3], "kong": null, "li": ["a", "b", "c"], "age": 18, "shi": true}
  • load:load方法与dump相反,它实现在文件中的序列化反过程。
with open('data.json','r') as f:
print(json.load(f))
{'li': ['a', 'b', 'c'], 'name': 'wl', 'shi': True, 'tu': [1, 2, 3], 'dict': {'3': 4, '1': 2}, 'kong': None, 'age': 18}

Python模块——json的更多相关文章

  1. Python模块(json)

    json json模块,用来处理json风格的数据 一.json的数据格式 json是javascripts的标准格式,json的格式是由若干个 键/值(key,values) 对的集合,该集合可以理 ...

  2. 潭州课堂25班:Ph201805201 python 模块json,os 第六课 (课堂笔记)

    json 模块 import json data = { 'name':'aa', 'age':18, 'lis':[1,3,4], 'tupe':(4,5,6), 'None':None } j = ...

  3. python模块-json、pickle、shelve

    json模块 用于文件处理时其他数据类型与js字符串之间转换.在将其他数据类型转换为js字符串时(dump方法),首先将前者内部所有的单引号变为双引号,再整体加上引号(单或双)转换为js字符串:再使用 ...

  4. python模块--json \ pickle \ shelve \ XML模块

    一.json模块 之前学习过的eval内置方法可以将一个字符串转成一个python对象,不过eval方法时有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,e ...

  5. day19 python模块 json模块 pickle模块

    day19 python   一.序列化模块     序列类型: 列表 字符串 元组 bytes     序列化: 特指字符串和bytes, 就是把其他的数据类型转化成序列的数据类型的过程 dic = ...

  6. python 模块-json

    1.JSON(Javascript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Lan ...

  7. python 模块之-json

    python 模块json import json x="[null,true,false,1]" print(json.loads(x))   #---------------- ...

  8. python模块(json和pickle模块)

    json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个 ...

  9. python模块time&datetime&json & picle&14.logging等

    本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...

随机推荐

  1. hdu 1160 上升序列 dp

    FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. 课堂测试_WEB界面链接数据库

    课堂测试_WEB界面链接数据库 一,题目: 一. 考试要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求 ...

  3. 再战希捷:西部数据透露96层闪存已用于消费级SSD

    导读 96层堆叠3D NAND闪存已经成为行业主流,包括西部数据这样的传统机械硬盘大厂,也在逐步普及96层闪存,并已经用于消费级SSD. 96层堆叠3D NAND闪存已经成为行业主流,包括西部数据这样 ...

  4. c++ 字符串转数字或数字转字符串

    在C++中字符串转换为数字,或数字转换为字符串,用到如下函数: _itoa atoi.atof.itoa.itow _itoa_s 1.整形转换为字符串: wchar_t * _itot(int _V ...

  5. 关于Wasserstein GAN的一些笔记

    这篇笔记基于上一篇<关于GAN的一些笔记>. 1 GAN的缺陷 由于 $P_G$ 和 $P_{data}$ 它们实际上是 high-dim space 中的 low-dim manifol ...

  6. 已知root用户密码并登录,修改mysql用户名密码方法

    首先进入命令行下:以root用户登录,命令:mysql -uroot -p 回车 输入密码:mysql>use mysql:mysql>UPDATE user SET password=P ...

  7. PAT Advanced 1018 Public Bike Management (30) [Dijkstra算法 + DFS]

    题目 There is a public bike service in Hangzhou City which provides great convenience to the tourists ...

  8. python单链表的基本操作思路

    单链表: 1.定义链表 class ListNode: # 定义节点 def __init__(self, x): self.val = x # 节点当前值 self.next = None # 指向 ...

  9. XML--XML Schema Definition(二)

    参考 http://www.w3school.com.cn/schema/index.asp XSD 简易元素 XML Schema 可定义 XML 文件的元素. 简易元素指那些只包含文本的元素.它不 ...

  10. 大数据高可用集群环境安装与配置(03)——设置SSH免密登录

    Hadoop的NameNode需要启动集群中所有机器的Hadoop守护进程,这个过程需要通过SSH登录来实现 Hadoop并没有提供SSH输入密码登录的形式,因此,为了能够顺利登录每台机器,需要将所有 ...