Python 操作 JSON 的 9 个示例
2 年前
· 来自专栏
知识聚变
Python 操作 JSON 的 9 个示例
Json(JavaScript Object Notation 的缩写)是一种数据交换格式,最常用于客户端-服务器通信;当然你也可以将它保存到本地,所以也可以用来作为配置文件;Json 很像 Python 中的字典,下面就让我们来一起学习如何用 Python 来操作 Json
01 将字典转化为 JSON
输入:
data = {"key1":"value1","key2":"value2"}
输出:
data = {"key1":"value1","key2":"value2"}
有什么不一样吗?其实它们是很相似的
示例代码:
import json
data = {"key1" : "value1", "key2" : "value2"}
# 我们用到了json库的dumps方法,将Python对象转化为Json对象
jsonData = json.dumps(data)
print(jsonData)
02 访问 JSON 中的
key2
的值
输入:
data = {"key1":"value1","key2":"value2"}
输出:
value2
示例代码:
import json
sampleJson = """{"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 json
sampleJson = {"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 json
sampleJson = {"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 json
sampleJson = """{
"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 = name
self.engine = engine
self.price = price
vehicle = Vehicle("Toyota Rav4", "2.5L", 32000)
输出:
{
"name": "Toyota Rav4",
"engine": "2.5L",
"price": 32000
示例代码:
import json
from json import JSONEncoder
class Vehicle:
def __init__(self, name, engine, price):
self.name = name
self.engine = engine
self.price = price
class 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 json
class Vehicle:
def __init__(self, name, engine, price):
self.name = name
self.engine = engine
self.price = price
def 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 json
def validateJSON(jsonData):
try:
json.loads(jsonData)
except ValueError as err:
return False
return True
InvalidJsonData = """{ "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"
输出:
["name1", "name2"]
示例代码:
import json
sampleJson = """[
"id":1,
"name":"name1",
"color":[
"red",
"green"
"id":2,
"name":"name2",
"color":[
"pink",
"yellow"
data = []
try:
data = json.loads(sampleJson)