Python 操作 JSON 的 9 个示例
Json(Javascript Object Notation 的缩写)是一种数据交换格式,最常用于客户端-服务器通信;当然你也可以将它保存到本地,所以也可以用来作为配置文件;Json 很像 Python 中的字典,下面就让我们来一起学习如何用 Python 来操作 Json
01 将字典转化为 JSON
输入:
data = {"key1":"value1","key2":"value2"}
输出:
data = {"key1":"value1","key2":"value2"}
有什么不一样吗?其实它们是很相似的
示例代码:
import jsondata = {"key1" : "value1", "key2" : "value2"}# 我们用到了json库的dumps方法,将Python对象转化为Json对象
jsonData = json.dumps(data)
print(jsonData)
02 访问 JSON 中的key2
的值
输入:
data = {"key1":"value1","key2":"value2"}
输出:
value2
示例代码:
import jsonsampleJson = """{"key1": "value1", "key2": "value2"}"""# 我们用到了json库的loads方法
data = json.loads(sampleJson)
print(data['key2'])
03 将 Json 格式化后输出
输入:
sampleJson = {"key1": "value1", "key2": "value2"}
输出:
{"key1" = "value2","key2" = "value2","key3" = "value3"
}
示例代码:
import jsonsampleJson = {"key1" : "value2", "key2" : "value2", "key3" : "value3"}
prettyPrintedJson = json.dumps(sampleJson, indent=2, separators=(",", " = "))
print(prettyPrintedJson)
04 将 Json 按key
排序后保存输出到文件中
输入:
sampleJson = {"id" : 1, "name" : "value2", "age" : 29}
输出:
{"age": 29,"id": 1,"name": "value2"
}
示例代码:
import jsonsampleJson = {"id" : 1, "name" : "value2", "age" : 29}print("Started writing JSON data into a file")
with open("sampleJson.json", "w") as write_file:json.dump(sampleJson, write_file, indent=4, sort_keys=True)
print("Done writing JSON data into a file")
05 访问 Json 的嵌套对象,并输出 salary
的值
输入:
sampleJson = """{"company":{"employee":{"name":"emma","payble":{"salary":7000,"bonus":800}}}
}"""
输出:
7000
示例代码:
import jsonsampleJson = """{"company":{"employee":{"name":"emma","payble":{"salary":7000,"bonus":800}}}
}"""data = json.loads(sampleJson)
print(data['company']['employee']['payble']['salary'])
06 将类对象转化为 Json
输入:
class Vehicle:def __init__(self, name, engine, price):self.name = nameself.engine = engineself.price = pricevehicle = Vehicle("Toyota Rav4", "2.5L", 32000)
输出:
{"name": "Toyota Rav4","engine": "2.5L","price": 32000
}
示例代码:
import json
from json import JSONEncoderclass Vehicle:def __init__(self, name, engine, price):self.name = nameself.engine = engineself.price = priceclass VehicleEncoder(JSONEncoder):def default(self, o):return o.__dict__vehicle = Vehicle("Toyota Rav4", "2.5L", 32000)print("Encode Vehicle Object into JSON")
vehicleJson = json.dumps(vehicle, indent=4, cls=VehicleEncoder)
print(vehicleJson)
07 将 Json 转化为类对象
输入:
{ "name": "Toyota Rav4", "engine": "2.5L", "price": 32000 }
输出:
vehicleObj.name, vehicleObj.engine, vehicleObj.price
示例代码:
import jsonclass Vehicle:def __init__(self, name, engine, price):self.name = nameself.engine = engineself.price = pricedef vehicleDecoder(obj):return Vehicle(obj['name'], obj['engine'], obj['price'])vehicleObj = json.loads('{ "name": "Toyota Rav4", "engine": "2.5L", "price": 32000 }',object_hook=vehicleDecoder)print("Type of decoded object from JSON Data")
print(type(vehicleObj))
print("Vehicle Details")
print(vehicleObj.name, vehicleObj.engine, vehicleObj.price)
08 判断 Json 格式是否正确
输入:
{"company":{"employee":{"name":"emma","payble":{"salary":7000"bonus":800}}}
}
输出:
Given JSON string is Valid False
即格式错误
示例代码:
import jsondef validateJSON(jsonData):try:json.loads(jsonData)except ValueError as err:return Falsereturn TrueInvalidJsonData = """{ "company":{ "employee":{ "name":"emma", "payble":{ "salary":7000 "bonus":800} } } }"""
isValid = validateJSON(InvalidJsonData)print("Given JSON string is Valid", isValid)
09 获取 JSON 中key
为name
的所有值
输入:
[{"id":1,"name":"name1","color":["red","green"]},{"id":2,"name":"name2","color":["pink","yellow"]}
]
输出:
示例代码:
import jsonsampleJson = """[{"id":1,"name":"name1","color":["red","green"]},{"id":2,"name":"name2","color":["pink","yellow"]}
]"""data = []
try:data = json.loads(sampleJson)
except Exception as e:print(e)dataList = [item.get('name') for item in data]
print(dataList)
今天的教程,主要学习了:如何使用Python操作Json,包括读取和写入;大家都学会了吗?
欢迎关注公众号:KnowHub 知识加油站
后续我们会循序渐进的学习办公编程的其他知识,欢迎大家关注!