您的位置:首页 > 编程语言 > Python开发

python3 json的常用操作

2019-03-30 14:31 183 查看
版权声明:版权所有,违者必究! https://blog.csdn.net/qq_39426934/article/details/88912101

python3 json的常用操作

既然是基本操作 ,在这里我便开门见山

什么是json呢?json,即JavaScript Object Notation, 是一种轻量级的数据交换格式。python3中常用json模块对json数据进行解析。

json这个模块包含了两个函数:

json.dumps():对数据进行编码;

json.loads(): 对数据进行解码;

在json的编解码过程中,python 的原始类型与json类型会相互转换.

如python中的dict会编码成json的object:

import json
data = {
"a":1
"b":2
}
json_data = json.dumps(data)
print(data)
print(json_data)

返回的结果如下:

{'a': 1, 'b': 2}
{"a": 1, "b": 2}

你会发现两者非常相似。
我们在反过来对其进行解码

str_data = json.loads(json_data)

str_data['a']
str_data['b']

返回的结果如下:

1
2

##常见的python类型转化为json类型如下表:

dict  ->  object
list,tuple -> array
str -> string
int, float, int- & float-derived Enums -> number
True -> true
False -> false
None -> null

json转化python,则相反。

但是,当我们要处理的是文件,而不是字符串时,就要用到json.dump()和json.load()
写入json数据:

with open('test.json', 'w') as f:
json.dump(test, f)

读取json数据:

with open('data.json', 'r') as f:
json.load(f)

那么dumps和dump有什么区别呢?

###dumps和dump都是一种序列化方法,dumps只完成了序列化为str,dump必须传文件描述符,将序列化的str保存到文件中
dumps可以格式化所有的基本数据类型为字符串:
import json
json.dumps(1)
json.dumps([])
json.dumps({})
返回的结果如下:
‘1’
‘[]’
‘{}’

import json
test_data = {'a':1, 'b':2}
with open(r"E:\test\test.json","w",encoding = "utf-8") as f:
json.dump(test_data,f,indent = 5)

返回的结果如下:

{
"a": 1,
"b": 2
}

其中的indent默认为0,若小于0,也默认为0.

###loads和load 是一种反序列化方法 loads 只完成了反序列化,load 只接收文件描述符,完成了读取文件和反序列化

test_data2 = '{"a":1, "b":2}
json.loads(test_data2)

{‘a’: 1, ‘b’: 2}

import json
with open("test.json", "r", encoding = 'utf-8') as f:
data = json.load(f,strict=False)
print(data)

{‘a’: 1, ‘b’: 2}

####另外,在读取json文件时,直接使用文件名即可,若加路径,则会报错。
pickle模块也可以读取python,json模块和picle模块都有 dumps、dump、loads、load四种方法,而且用法一样。
不用的是json模块序列化出来的是通用格式,其它编程语言都认识,就是普通的字符串,
而pickle模块序列化出来的只有python可以认识,其他编程语言不认识的,表现为乱码
不过pickle可以序列化函数,但是其他文件想用该函数,在该文件中需要有该文件的定义(定义和参数必须相同,内容可以不同.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: