活动地址:优快云21天学习挑战赛
作者简介:大家好我是Apathfinder,目前是一名在校大学生,软件工程专业,记录学习路上的点点滴滴。
个人主页:Apathfinder本文专栏:Python学习
前言:本文是对学习完json模块后的一个总结,包含了loads以及dumps等函数的使用。
目录
1.json.loads(''loads'' means ''load string'')
2.json.dumps(''dumps'' means ''dump string'' )
正文
一.JSON
1.JSON简介
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation),JavaScript对象表示法是一种流行的格式,将数据格式化,成为人们可读的字符串。
- JSON 是存储和交换文本信息的语法,类似 XML
- JSON 比 XML 更小、更快,更易解析
- JSON 易于人阅读和编写
- JSON独立于语言
2.JSON语法
JSON 语法是 JavaScript 对象表示语法的子集。
- 数据在键/值对中
- 数据由逗号 , 分隔
- 使用斜杆来转义 \ 字符
- 大括号 {} 保存对象
- 中括号 [] 保存数组,数组可以包含多个对象
JSON 的两种结构:
1.对象:
大括号 {} 保存的对象是一个无序的键/值对集合。一个对象以左括号 { 开始, 右括号 } 结束。每个"键"后跟一个冒号 :,键/值对使用逗号 , 分隔。
JSON 对象在大括号 {} 中书写:{key1 : value1, key2 : value2, ... keyN : valueN },对象可以包含多个键/值对:
{"rank": 1, "name": "spiderman", "is_male": true, "money": null}
JSON对象嵌套
json_data1 = '{"name": "baidu", "age": 10,"sites": {"site1": "www.baidu.com","site2": "ww.baidu.com","site3": "w.baidu.com"}}' python_data1 = json.loads(json_data1) print(python_data1)
2.数组:
中括号 [] 保存的数组是值(value)的有序集合。一个数组以左中括号 [ 开始, 右中括号 ] 结束,值之间使用逗号 , 分隔。(值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array),它们是可以嵌套)
[ "Google", "Jingdong", "Taobao" ]
对象的属性可以是数组
{
"name":"网站",
"num":3,
"sites":[ "Google", "Jingdong", "Taobao" ]
}
3.JSON字符串处理
Python的JSON模块处理了JSON数据字符串和Python值之间转换的所有细节,得到了json.loads(),json.dumps函数。
使用前导入JSON模块:
import json
JSON并不能存储每一种Python值,它只能包含以下Python数据类型的值:
- int(整型)
- float(浮点型)
- string(字符串)
- list(列表)
- tuple(元组)
- dict(字典)
- NoneType
- boolean (布尔型)
1.json.loads(''loads'' means ''load string'')
使用loads()将JSON数据字符串转换为Python值,下表是从JSON到Python的数据类型转换
JSON | Python |
---|---|
object | dict |
array | list |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
null | None |
import json json_data1 = '{"rank": 1, "name": "spiderman", "is_male": true, "money": null, ' \ '"family": ["dad", "mom", "brother", "dog"]}' python_data1 = json.loads(json_data1) print("json字符串解码前:", json_data1) print("json字符串解码后:", python_data1) #为Python字典
可以明显看出类型的不同,true--True, null--None等
2.json.dumps(''dumps'' means ''dump string'' )
使用dumps()将Python值转换为JSON数据字符串,下表是从Python到JSON的数据类型转换
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str | string |
int, float, int- & float-derived Enums | number |
True | true |
False | false |
None | null |
代码
import json # Python 对象(字典):转换包含所有合法数据类型的 Python 对象: student_py = { "name": "Bill", "age": 63, "married": True, "divorced": False, "children": ("Jennifer","Rory","Phoebe"), "pets": None, "cars": [ {"model": "Porsche", "mpg": 38.2}, {"model": "BMW M5", "mpg": 26.9} ] } # 转换为 JSON: student_json = json.dumps(student_py) # 结果是 JSON 字符串: print("编码前:", student_py) print("编码后:", student_json)
结果
编码前: {'name': 'Bill', 'age': 63, 'married': True, 'divorced': False, 'children': ('Jennifer', 'Rory', 'Phoebe'), 'pets': None, 'cars': [{'model': 'Porsche', 'mpg': 38.2}, {'model': 'BMW M5', 'mpg': 26.9}]} 编码后: {"name": "Bill", "age": 63, "married": true, "divorced": false, "children": ["Jennifer", "Rory", "Phoebe"], "pets": null, "cars": [{"model": "Porsche", "mpg": 38.2}, {"model": "BMW M5", "mpg": 26.9}]}
4.JSON文件处理
如果处理的是文件而不是字符串,可以使用 json.dump() 和 json.load() 来编码和解码JSON数据。
data = {
"name": "Bill",
"age": 63,
"married": True,
"divorced": False,
"children": ("Jennifer","Rory","Phoebe"),
"pets": None,
"cars": [
{"model": "Porsche", "mpg": 38.2},
{"model": "BMW M5", "mpg": 26.9}
]
}
# 写入 JSON 数据
with open('data.json', 'w') as f:
json.dump(data, f)
# 读取数据
with open('data.json', 'r') as f:
data2 = json.load(f)
print(data2)
写入成功
#读取结果
{'name': 'Bill', 'age': 63, 'married': True, 'divorced': False, 'children': ['Jennifer', 'Rory', 'Phoebe'], 'pets': None, 'cars': [{'model': 'Porsche', 'mpg': 38.2}, {'model': 'BMW M5', 'mpg': 26.9}]}
写在最后
今天的文章就到这里,如果你觉得写的不错,可以动动小手给博主一个免费的关注和点赞👍;如果你觉得存在问题的话,欢迎在下方评论区指出和讨论。
谢谢观看,你的支持就是我前进的动力!