JSON 是用于存储和交换数据的语法。
JSON 是用 JavaScript 对象表示法(JavaScript object notation)编写的文本。
Python 中的 JSON
Python 有一个名为 json 的内置包,可用于处理 JSON 数据。
json包
json.loads()将json进行解析 转换成Python 字典
json.dumps()将字典转换成json 字符串
#引入json包 import json #json.loads() 方法对json进行解析。结果将是 Python 字典。 # 一些 JSON: x = '{ "name":"Bill", "age":63, "city":"Seatle"}' #解析x y=json.loads(x) print(y)#{'name': 'Bill', 'age': 63, 'city': 'Seatle'} #json.dumps()把Python字典转换成json字符串 z=json.dumps(y) print(z)#{"name": "Bill", "age": 63, "city": "Seatle"} print(z is y)#False
''' 您可以把以下类型的 Python 对象转换为 JSON 字符串: dict list tuple string int float True False None ''' import json print(json.dumps({"name": "Bill", "age": 63})) #{"name": "Bill", "age": 63} 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
格式化结果
上面的实例打印一个 JSON 字符串,但它不是很容易阅读,没有缩进和换行。
json.dumps() 方法提供了令结果更易读的参数:
使用 indent 参数定义缩进数:
使用 separators 参数来更改默认分隔符: 默认值为("," , ":")
使用 sort_keys 参数来指定是否应对结果进行排序:
json.dumps(x, indent=4, separators=(". " , " = "))
#转换包含所有合法数据类型的 Python 对象: x = { "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 }] } print(json.dumps(x)) #格式化结果打印一个 JSON 字符串,但它不是很容易阅读,没有缩进和换行。 ''' {"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}]} ''' #json.dumps(item,indent) 方法提供了令结果更易读的参数: #使用 indent 参数定义缩进数: print(json.dumps(x, indent=4)) ''' { "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 } ] } ''' #separators 参数 #您还可以定义分隔符,默认值为(", " , ": "),这意味着使用逗号和空格分隔每个对象,使用冒号和空格将键与值分开: z=json.dumps(x, indent=4, separators=(". " , " = ")) print(z) ''' { "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 } ] } ''' #对结果排序 # json.dumps() 方法提供了对结果中的键进行排序的参数: #使用 sort_keys 参数来指定是否应对结果进行排序: p=json.dumps(x, indent=4, sort_keys=True) print(p) '不知道什么作用 按什么顺序排列的' ''' { "age": 63, "cars": [ { "model": "Porsche", "mpg": 38.2 }, { "model": "BMW M5", "mpg": 26.9 } ], "children": [ "Jennifer", "Rory", "Phoebe" ], "divorced": false, "married": true, "name": "Bill", "pets": null } '''