json基本格式
"""
json格式 -> [{}, {}]:
[{
"name": "Bob",
"gender": "male",
"Birthday": "1995-10-18"
},
{
"name": "Tom",
"gender": "female"
"Birthday": "1995-10-18"
}]
"""
在python中如何对json进行操作 (loads / dumps)
- loads() -> json字符串转列表类型
import json
str = '''
[{
"name": "Bob",
"gender": "male",
"Birthday": "1995-10-18"
},
{
"name": "Tom",
"gender": "female",
"Birthday": "1995-10-18"
}]
'''
# 将json字符串转换为python的列表
data = json.loads(str)
print(type(data)) # -> list
# 列表内部为字典类型
print(type(data[0])) # -> dict
'''
对于字典类型的获取:
(1). 直接索引
(2). 通过get()方法
推荐使用get()方法,因为即使检索不到相应的键值对不会报错,会返回None,同时还可以为(可能)不存在的键指定默认的值
'''
# print(data[0]["gender"]) -> 返回对应值
# print(data[0].get("gender")) -> 与上面返回值相同
# print(data[0].get("hobby", "sport")) -> 无对应值,返回默认值sport
# print(data[0]["hobby"]) -> 无对应值报错
- dumps() -> 列表转字符串
data = [{
'name': 'Zhao',
'gender': 'male',
'birthday': '1992-10-18'
}]
ts = json.dumps(data)
print(type(ts)) # -> str
Tip
使用dumps()方法时需要注意,当json中包含中文时,dumps()默认使用ascii对中文进行编码,当将json.dumps(data)直接输出到文件中时会显示中文的ascii编码
# 需要指定文件的输出编码
with open('data.json', 'w', encoding='utf-8') as f:
# 同时指定参数ensure_ascii=False
# indent=2是为了使得输出格式更美观
f.write(json.dumps(data, indent=2, ensure_ascii=False))
json作为字符串时,使用双引号!
# 使用单引号,抛出json.decoder.JSONDecodeError
tstr = '''
[{
'name': 'Bob',
'gender': 'male',
'Birthday': '1995-10-18'
}]
'''
print(json.loads(tstr))