jsondump jsonload jsonpath

jsondump jsonload jsonpath

阅读量:11
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)
Comments are closed.