简介

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. pycharm 设置项目的编译器

    设置编译器(interpreter) File---Setting--在搜索框输入(interpreter)

  2. 新版本vue-cli3.x 无法热更新问题【转载】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_38644883/articl ...

  3. LeetCode刷题(持续更新ing……)

    准备刷题了!已经预见未来的日子是苦并快乐的了!虽然 N 年前刷过题,但现在感觉数据结构与算法的基本功快忘光了

  4. HDFS 中文件操作的错误集锦

    问题1  Java ApI执行追加写入时:无法写入 问题描述: ①当前数据节点无法写入,②追加文件需要再次请求. 问题2  命令行执行追加写入时:无法写入 问题描述: 当前数据节点无法写入 问题3   ...

  5. UIWindow的那些事

    UIView是视图的基类,UIViewController是视图控制器的基类,UIResponder是表示一个可以在屏幕上响应触摸事件的对象: 一.UIWindow是一种特殊的UIView,通常在一个 ...

  6. sql同时删除多个表的数据

    DELETE语句中指定多个表,根据多个表中的特定条件,从一个表或多个表中删除行. 不过,您不能在一个多表DELETE语句中使用ORDER BY或LIMIT. DELETE t1, t2 FROM t1 ...

  7. react-native-tab-view 导航栏切换插件讲解

    首先引入插件 yarn add react-native-tab-view 如果用的原生环境要安装另外几个插件 yarn add react-native-reanimated react-nativ ...

  8. virtualbox 共享文件夹 操作过程

    1.在本地主机上找到 VBoxGuestAdditions.iso,我的位置就在E:\Oracle\VirtualBox\VBoxGuestAdditions.iso 2 复制到虚拟机中,我用的是 x ...

  9. 程序员必备:详解XSS和CSRF

    做开发的小伙伴想必都不陌生XSS 和 CSRF,但也有一些刚接触的朋友还不是很清楚,今天就给大家详解下XSS和CSRF! 一.XSS xss,即 Cross Site Script,中翻译是跨站脚本攻 ...

  10. 一维消消乐(DP)

    一维消消乐是一款非常简单的游戏.有n颗珠子排成一排,每一颗珠子有一个价值w(可能是负数). 游戏是这样,你可以选择如若干对相邻的珠子,让他们同时消去.每一对珠子的消失,都会使得总分数加上两颗珠子相乘的 ...