当前位置: 代码网 > it编程>前端脚本>Python > python读写json、格式化写入json文件实现方式

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

2025年10月24日 Python 我要评论
json与python序列化操作指南一、json概述定义json(javascript object notation)是一种轻量级数据交换格式,基于ecmascript子集,具有以下特性:语言无关的

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() + 手动写入
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:文件 ↔ 内存对象

数据类型限制

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

最佳实践

# 写入推荐
json.dump(data, file, indent=2, ensure_ascii=false) 

# 读取推荐
with open("data.json") as f:
    data = json.load(f)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com