python - json模块使用 / 快速入门

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))

你可能感兴趣的:(python - json模块使用 / 快速入门)