python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python的json模块

关于Python的json字符串与json模块解读

作者:灰勒塔德

这篇文章主要介绍了关于Python的json字符串与json模块解读,JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等),这些特性使JSON成为理想的数据交换语言,需要的朋友可以参考下

1.json简介:

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language,Standard ECMA-262 3rd Edition - December 1999的一个子集。

JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。

JSON建构于两种结构,一是“名称/值”对的集合(Acollectionofname/valuepairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hashtable),有键列表(keyedlist),或者关联数组(associativearray)。

二是值的有序列表(Anorderedlistofvalues)。在大部分语言中,它被理解为数组(array)。

2.json对象

语法格式:

json对象必须在花括号里面,对象可以包括多个键值对,但是跟字典是不一样的,json中的字符串必须用双引号,而Python对象的字典可以单引号也可以双引号

示例:

#json字符串
#json字符串只要是字符串类型的都必须用双引号
{"韩信":"刺客","李白":666,"李信":"A级刮痧师","宫本武藏":123}
#json数组
#外面必须要有花括号括起来
{
    "writer":[
        {"name":"泰戈尔","country":"India"},
        {"name":"鲁迅","country":"China"},
        {"name":"奥斯特洛夫斯基","country":"Russia"}
    ]
}

json对象与Python对象对比

JSONPython
objectdict
arraylist
stringstr
number (integer)int
number (real)float
trueTrue
falseFalse
nullNone

这里我们可以看出,json字符串与Python的字典非常相似,但是也有不同(上面讲了),所以一般情况下json字符串和Python对象之间的转换是json字符串和字典直接的转换

3.json模块

json模块只有4种方法:分别是dump、dumps、load、loads,下面我会一一介绍。

json模块的作用:

1.把Python对象转换为json字符串

2.把json字符串转换为Python对象

导入模块

import json

(1)json.dumps() 函数

格式:

json.dumps(data,indent,sort_key)

参数说明:data是表示Python中的数据对象,indent是表示格式化空格的数量,sort_key是表示是否进行由小到大排序(布尔变量),如果填入True就表示是,如果天False或者不填就表示否

作用:把Python对象转换为json字符串

示例:

import json
di={'name':'Jack','age':19,'gander':'male'}
print(di,type(di))
a=json.dumps(di) #获取json字符串对象
print(a,type(a))
#输出结果:{'name': 'Jack', 'age': 19, 'gander': 'male'} <class 'dict'>
#         {"name": "Jack", "age": 19, "gander": "male"} <class 'str'>
import json
di={5:'Jack',2:'Petter',3:'John',1:'Tom',4:'Amy'}
print(di,type(di))
a=json.dumps(di,sort_keys=True) #获取json字符串对象
print(a,type(a))
#输出结果:{5: 'Jack', 2: 'Petter', 3: 'John', 1: 'Tom', 4: 'Amy'} <class 'dict'>
#         {"1": "Tom", "2": "Petter", "3": "John", "4": "Amy", "5": "Jack"} <class 'str'>

(2)json.dump() 函数

格式:

json.dump(data,fp,indent)

参数说明:data是表示Python对象或者json对象,fp是表示文件,indent是表示输出格式化(空格的数量)

作用:这个函数是吧一个data数据转换为json字符串,然后再写入fp文件中(如果data是Python对象,那么就会转换为json字符串;如果本身就是json字符串,那结果还是json字符串)

示例1:

import json
di={5:'Jack',2:'Petter',3:'John',1:'Tom',4:'Amy'}
with open('kk.json','w',encoding='utf8') as f:
    json.dump(di,f)
    #其实这种写法等效于f.write(json.dumps(data))
#结果会生成一个json文件,其中就有写入的数据

这里可以看出写入的数据并不是很好看,没有那种格式化效果

示例2:(设置indent格式化写入)

import json
di={5:'Jack',2:'Petter',3:'John',1:'Tom',4:'Amy'}
with open('kk.json','w',encoding='utf8') as f:
    json.dump(di,f,indent=4)

这看上去就舒服多了,所以呢,我们写入文件的时候可以适当设置格式化,增强文件的可读性。

(3)json.loads() 函数

格式:

json.loads(jsondata)

参数说明:jsondata是表示json对象

作用:把json字符串转换为Python对象(一般是字典)

示例1:

import json
jsonstr='{"name":"Jack","age":18,"gander":"male","alive":true}'
pythondict=json.loads(jsonstr)
print(pythondict,type(pythondict))
#输出结果:{'name': 'Jack', 'age': 18, 'gander': 'male', 'alive': True} <class 'dict'>

示例2:

import json
jsonstr='["a","b","c",{"name":"jack","alive":true}]'
pythondict=json.loads(jsonstr)
print(pythondict,type(pythondict))
#输出结果:['a', 'b', 'c', {'name': 'jack', 'alive': True}] <class 'list'>

(4)json.load() 函数

格式:

json.load(fp)

参数说明:fp是表示json文件

作用:从文件读取数据然后转换为Python对象(其实就跟json.dump反过来就是了),然后返回这个对象

示例:

json文件的内容

import json
with open('kk.json','r',encoding='utf8') as f:
    pythondata=json.load(f)
    #等效于 pythondata=f.read()
print(pythondata,type(pythondata))
#输出结果:{'5': 'Jack', '2': 'Petter', '3': 'John', '1': 'Tom', '4': 'Amy'} <class 'dict'>

4.总结:

方法功能
ison.dump(obj, fp)将python数据类型转换并保存到json格式的文件内.
json.dumps(obj)将python数据类型转换为json格式的字符串。
json.load(fp)从ison格式的文件中读取数据并转换为python的类型
json.loads(s)将json格式的字符串转换为python的类型

到此这篇关于关于Python的json字符串与json模块解读的文章就介绍到这了,更多相关Python的json模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文