jsondump jsonload jsonpath
阅读量:10
jsondumps jsondump 字典存文件时,将数据转为字符类型,写入到文件
# 导入json模块,用于将字典转换为JSON格式的字符串
import json
dic = {
"name": "广东", # 省份名称
"cities": { # 城市信息
"city": ["广州", "深圳", "珠海"] # 城市列表
}
}
print(type(dic)) # 打印dic的类型,输出<class 'dict'>
# 打开文件,准备写入
with open('广东.json', 'w', encoding='utf-8') as f:
# 将dic转换为JSON格式的字符串并写入文件
f.write(json.dumps(dic))
import json
dic = {
"name": "广东",
"cities": {
"city": ["广州", "深圳", "珠海"]
}
}
print(type(dic)) # <class 'dict'>
# 使用json.dump()方法将字典dic以JSON格式写入文件
# ensure_ascii=False表示不将中文字符转义为ASCII编码
# indent=4表示格式化输出,缩进为4个空格,使生成的JSON文件更易读
with open('广东.json', 'w', encoding='utf8') as f:
# f.write(json.dumps(dic, ensure_ascii=False, indent=4)) # json.dumps()写法
json.dump(dic, f, ensure_ascii=False, indent=4) # json.dump()写法
jsonload jsonloads 从文件里(字符类型),把数据读取为json格式
import json
# 打开文件“广东.json”,以读取模式打开,指定编码为utf8
with open('广东.json', 'r', encoding='utf8') as f:
line = f.read() # 读取文件的全部内容,并将其赋值给变量line
# 使用json.loads()方法将字符串line转换为JSON对象
json_obj = json.loads(line)
# 打印json_obj的类型,json_obj是字典类型
print(type(json_obj))
# 打印json_obj的内容,即转换后的字典对象
print(json_obj)
import json
# 打开文件“广东.json”,以读取模式打开,指定编码为utf8
with open('广东.json', 'r', encoding='utf8') as f:
json_obj = json.load(f) # 使用json.load()方法直接从文件中加载JSON数据
# 打印json_obj的类型,json_obj是字典类型
print(type(json_obj))
# 打印json_obj的内容,即加载后的字典对象
print(json_obj)
jsonpath 解析json结构的数据解析模块,可以从json中抽取指定信息。
# 导入jsonpath模块
import jsonpath
# 定义JSON数据
data = {
"store": {
"book": [
{
"category": "classics",
"author": "施耐庵",
"title": "水浒传",
"price": 58.00
},
{
"category": "classics",
"author": "罗贯中",
"title": "三国演义",
"price": 68.00
},
{
"category": "classics",
"author": "吴承恩",
"title": "西游记",
"isbn": "978-7-5327-6543-2",
"price": 78.00
},
{
"category": "classics",
"author": "曹雪芹",
"title": "红楼梦",
"isbn": "978-7-5302-1843-4",
"price": 88.00
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
# $.store.book[*].author 所有书籍的作者
authors = jsonpath.jsonpath(data, "$.store.book[*].author")
print("所有书籍的作者:", authors)
# $.store.book[1].title 第二本书的书名
second_book_title = jsonpath.jsonpath(data, "$.store.book[1].title")
print("第二本书的书名:", second_book_title)
# $..author 所有作者
all_authors = jsonpath.jsonpath(data, "$..author")
print("所有作者:", all_authors)
# $.store.* store下的所有子节点
store_children = jsonpath.jsonpath(data, "$.store.*")
print("store下的所有子节点:", store_children)
# $.store..price 所有价格字段
all_prices = jsonpath.jsonpath(data, "$.store..price")
print("所有价格字段:", all_prices)
# $..book[2] 第三本书(索引从 0 开始)
third_book = jsonpath.jsonpath(data, "$..book[2]")
print("第三本书:", third_book)
# $..book[(@.length-1)] 最后一本书
last_book = jsonpath.jsonpath(data, "$..book[(@.length-1)]")
print("最后一本书:", last_book)
# $..book[?(@.isbn)] 含 isbn的书
books_with_isbn = jsonpath.jsonpath(data, "$..book[?(@.isbn)]")
print("含 isbn的书:", books_with_isbn)
# $..book[?(@.price<10)] 价格小于 10 的书
books_with_price_less_than_10 = jsonpath.jsonpath(data, "$..book[?(@.price<10)]")
print("价格小于 10 的书:", books_with_price_less_than_10)
# $..* 递归匹配所有子节点
all_nodes = jsonpath.jsonpath(data, "$..*")
print("递归匹配所有子节点:", all_nodes)