相关文章推荐
闯红灯的大象  ·  js ...·  2 周前    · 
犯傻的海龟  ·  python 科学计数法 转 ...·  1 周前    · 
坚强的遥控器  ·  python unittest ...·  1 年前    · 
爱旅游的伤疤  ·  js ...·  1 年前    · 
稳重的树叶  ·  HTML 列表 | 菜鸟教程·  1 年前    · 
潇洒的雪糕  ·  VUE-015-解决 vue ...·  1 年前    · 
首发于 python

Python标准库之json

Python标准库之json

一、什么是json

  • json是一种轻量级的文本数据交换格式
  • json独立于其他语言
  • json具有自我描述性,更好理解
  • json比xml更小、更快,更容易解析

二、json格式

{
    "name""lhh",
    "age":"20"
}
name = lhh
age = 20

三、json标准库的作用

  • 使用json字符串生成python对象(load)
  • 由python对象格式成为json字符串(dump)

四、数据的类型转换

将数据从python转换到json格式,在数据类型上会有什么变化呢,如下表所示:

| Python | JSON | | -------------- | ------ | | dict | object | | list,tuple | array | | str | string | | int,float,int- | number | | True | true | | False | false | | None | null |

五、使用方式

json模块的使用很简单,对于大多数,我们只需要使用以下4中方式:

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

六、实战操作

1.python转换为json字符串

#从python对象格式化一个json  string
person = {"name":"lhh","age":25}
print(person)
#转换为json字符串
jsonStr = json.dumps(person)
print(jsonStr)

输出:



在python中定义json的时候,可以使用单引号,也可以使用双引号。但是最后在输出的时候,输出的是一个单引号,以字典的方式进行输出的。但是在我们进行json格式转换之后,我们就会变成一个标准的json格式的字符串,即双引号修饰的字符串

2.json文件生成

json.dump(person,open("data.json","w"))

文件输出:



此时输出到文件的时候不是json缩进的格式,此时我们只需要指定参数 indent 就可以输出执行格式

#转换为json字符串
jsonStr = json.dumps(person,indent=4)
print(jsonStr)
json.dump(person,open("data.json","w"),indent=4)
{'name': 'lhh', 'age': 25}
    "name": "lhh",
    "age": 25
}



此时我们输出到文件中也是个格式化后的结果

3.生成文件的key进行排序

我们需要对我们的key进行排序,即按照字母的顺序进行排序的话,我们只需要指定参数 sort_keys 即可

#转换为json字符串
jsonStr = json.dumps(person,indent=4,sort_keys=True)
print(jsonStr)
json.dump(person,open("data.json","w"),indent=4,sort_keys=True)

我们来看下最后的实际效果:

{'name': 'lhh', 'age': 25}
    "age": 25,
    "name": "lhh"
}



4.json string 转换成python对象

第一种转换格式

#json string 转换成python对象
# load loads
s = '{"name":"lhh","age":25,"home":["南京","淮安"],"only":true}'
pythonObj = json.loads(s)
print(pythonObj)
print(type(pythonObj))

输出:

{'name': 'lhh', 'age': 25, 'home': ['南京', '淮安'], 'only': True}
<class 'dict'>

第二种转换格式

s2 = '["name","lhh","age",25,{"home":["南京","淮安"],"only":true}]'
pythonObj2 = json.loads(s2)
print(pythonObj2)
print(type(pythonObj2))

输出

['name', 'lhh', 'age', 25, {'home': ['南京', '淮安'], 'only': True}]
<class 'list'>

我们看到两种最后输出的格式是不一样的

5、从文件读取json并生成python对象

#读取json文件
pythondata = json.load(open("data2.json","r"))
print(pythondata)
print(type(pythondata))

文件内容:

{
    "age": 25,
    "name": "lhh",