开发者

python读写json、格式化写入json文件实现方式

开发者 https://www.devze.com 2025-10-25 09:18 出处:网络 作者: 尤达c
目录jsON与python序列化操作指南一、JSON概述二、序列化模块对比三、json模块核心方法四、JSON文件格式化技巧核心总结JSON与Python序列化操作指南
目录
  • jsON与python序列化操作指南
    • 一、JSON概述
    • 二、序列化模块对比
    • 三、json模块核心方法
    • 四、JSON文件格式化技巧
  • 核心总结

    JSON与Python序列化操作指南

    一、JSON概述

    定义

    JSON(JavaScript Object Notation)是一种轻量级数据交换格式,基于ECMAScript子集,具有以下特性:

    • 语言无关的文本格式
    • 语法类似C语言家族(C/C++/Java/javascript等)
    • 人类可读且机器高效解析
    • 广泛用于网络数据传输

    Python中的映射关系

    JSON数组   ↔ Python列表(list)
    JSON对象  ↔ Python字典(dict)
    

    二、序列化模块对比

    特性json 模块pickle 模块
    跨语言支持✔️ (多语言兼容)❌ (仅Python)
    数据类型支持基础类型(字典/列表/字符串/数字)所有Python类型(类/函数等)
    安全性高(无代码执行风险)低(可能执行任意代码)
    典型用途API数据交换、配置文件Python对象持久化存储

    三、json模块核心方法

    1. dumps():数据类型 → JSON字符串

    import json
    
    test_dict = {'one': 1, 'two': {2.1: ['a', 'b']}}
    json_str = json.dumps(test_dict)  # 关键操作
    
    print(f"原始类型: {type(test_dict)}")  # <class 'dict'>
    print(f"转换后类型: {type(json_str)}")  # <class 'str'>
    print(f"JSON字符串: {json_str}")      # {"one": 1, 编程客栈"two": {"2.1": ["a", "b"]}}
    

    注意:键2.1会被转换为字符串(JSON规范要求键必须是字符串)

    2. loads():JSON字符串 → Python数据类型

    new_dict = json.loads(json_str)  # 解析JSON字符串
    
    print(f"解析后类型: {type(new_dict)}")  # <class 'dict'>
    print(f"内容: {new_dict}")             # {'one': 1, 'two': {'2.1': ['a', 'b']}}
    

    3. dump():字典 → JSON文件

    with open("record.json", "w") as f:
        json.dump(new_dict, f)  # 写入文件
        print("JSON文件写入完成")
    

    生成文件内容

    {"one": 1, "two": {"2.1": ["a", "b"]}}
    

    4. load():JSON文件 → Python字典

    with open("record.json", "r") as load_f:
        load_dict = json.load(load_f)  # 从文件加载
    
    print(f"文件解析类型: {type(load_dict)}")  # <class 'dict'>
    print(f"内容: {load_dict}")               # {'one': 1, 'two': {'2.1': ['a', 'b']}}
    

    四、JSON文件格式化技巧

    两种等效实现方式:

    # 方法1:dumps()php + 手动写入
    with open("format_json.json", "w") as f:
        f.write(json.dumps(load_dict, indent=4, ensure_ascii=False))
    
    # 方法2:直接使用dump()参数
    with open("format_json.json", "w") as f:
        json.dump(load_dict, f, indent=4, ensure_ascii=False)
    

    关键参数

    • indent=4:4空格缩进格式化
    • ensure_ascii=False:支持非ASCII字符(如中文)

    格式化后文件

    {
        "one": 1,
        "two": 编程客栈{
            "2.1": [
                "a",
                "b"
            ]
        }
    }
    

    核心总结

    基础转换

    • dumps/loads:内存对象 ↔ JSON字符串
    • dump/load:文件 javascript↔ 内存对象

    数据php类型限制

    JSON不支持Python特有类型(如日期/类对象),此时需用pickle

    最佳实践

    # 写入推荐
    json.dump(data, file, indent=2, ensure_ascii=False) 
    
    # 读取推荐
    with open("data.json") as f:
        data = json.load(f)
    

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号