JSON
JSON是一种用于数据交换与存储的数据类型, 是一种用JavaScript对象格式编写的文本,Python内置的json模块可以用于操作json格式的数据
JSON字符串转Python对象
使用json.loads()把字符串类型的json数据转为Python类型
x = '''
{
"name":"Leon",
"age":18,
"city":"New York"
}
'''
y = json.loads(x)
print(type(y)) # <class 'dict'>
print(y['age']) # 18
print(type(y['age'])) # int
Python对象转JSON字符串
loads
使用json.dump()把Python类型的数据转为json字符串
dic = {
"email":"beeplux.gmail.com",
"phone":"+86 188 9999 0000"
}
dic_json = json.dumps(dic)
print(type(dic_json))
print(dic_json)
Python有以下数据类型的对象可以转为json字符串, 它们会映射为 JavaScript / JSON 中对应的数据类型:
- dict
- list
- tuple
- string
- int
- float
- True
- False
- None
print(json.dumps({"name": "John", "age": 30})) # {"name": "John", "age": 30}
print(json.dumps(["apple", "bananas"])) # ["apple", "bananas"]
print(json.dumps(("apple", "bananas"))) # ["apple", "bananas"]
print(json.dumps("hello")) # "hello"
print(json.dumps(42)) # 42
print(json.dumps(31.76)) # 31.76
print(json.dumps(True)) # true
print(json.dumps(False)) # false
print(json.dumps(None)) # null
指定缩进
使用indent参数让json字符串更容易阅读
dic = {
"email":"beeplux.gmail.com",
"phone":"+86 188 9999 0000"
}
dic_json = json.dumps(dic, indent=4)
# output
# {
# "email": "beeplux.gmail.com",
# "phone": "+86 188 9999 0000"
# }
指定分隔符
dumps方法默认使用,分割每个对象, 使用:分割键和值, 可以使用seprators参数指定分隔符
dic_json = json.dumps(dic, indent=4, separators=(".", " = "))
print(type(dic_json))
print(dic_json)
#output
# {
# "email" = "beeplux.gmail.com".
# "phone" = "+86 188 9999 0000"
# }
排序
可以把dumps()中的sort_keys设置为True让转出的json字符串按照 key 的字典序(lexicographical order)排序,既是为了方便阅读, 也是为了让输出的结果更加稳定
info = {
"name4": "Zara",
"name2": "Cindy",
"name1": "Leon",
"name3": "Bob"
}
info_json = json.dumps(info, indent=4)
info_json_sorted = json.dumps(info, indent=4, sort_keys=True)
print(info_json)
print(info_json_sorted)
# output
{
"name4": "Zara",
"name2": "Cindy",
"name1": "Leon",
"name3": "Bob"
}
{
"name1": "Leon",
"name2": "Cindy",
"name3": "Bob",
"name4": "Zara"
}