当前位置: 首页 > article >正文

python处理json文件

1 普通类处理:

import json

class MotorModel:
    def __init__(self, name: str, rate: int, value: int):
        self.name = name
        self.rate = rate
        self.value = value

# 示例 motor_list
motor_list = [
    MotorModel('motor100', 1, 100),
    MotorModel('motor200', 2, 50),
    MotorModel('motor300', 3, 110),
]

# 将 MotorModel 对象转换为字典
def motor_to_dict(motor):
    return {
        'name': motor.name,
        'rate': motor.rate,
        'value': motor.value
    }

# 将 motor_list 转换为字典列表
motor_dict_list = [motor_to_dict(motor) for motor in motor_list]

# 保存为 JSON 文件
with open('motors.json', 'w') as f:
    json.dump(motor_dict_list, f, indent=4)

# 从字典创建 MotorModel 对象
def dict_to_motor(motor_dict):
    return MotorModel(
        name=motor_dict['name'],
        rate=motor_dict['rate'],
        value=motor_dict['value']
    )

# 从 JSON 文件中读取数据
with open('motors.json', 'r') as f:
    motor_dict_list = json.load(f)

# 将字典列表转换为 MotorModel 对象列表
motor_list_loaded = [dict_to_motor(motor_dict) for motor_dict in motor_dict_list]

# 打印加载的对象列表
for motor in motor_list_loaded:
    print(f"Name: {motor.name}, Rate: {motor.rate}, Value: {motor.value}")

2 数据类处理(推荐)

from dataclasses import dataclass, asdict
import json
from typing import List


@dataclass
class Model:
    Name: str
    Id: int
    Value: str
    Rate: int


def WriteFile(models: List[Model], filename: str) -> None:
    """
    将 Model 对象列表写入 JSON 文件
    """
    # 将 Model 对象列表转换为字典列表
    models_dict = [asdict(model) for model in models]

    # 写入 JSON 文件
    with open(filename, 'w') as f:
        json.dump(models_dict, f, indent=4)


def ReadFile(filename: str) -> List[Model]:
    """
    从 JSON 文件读取并解析为 Model 对象列表
    """
    # 从 JSON 文件读取字典列表
    with open(filename, 'r') as f:
        models_dict = json.load(f)

    # 将字典列表转换为 Model 对象列表
    models = [Model(**model_dict) for model_dict in models_dict]
    return models


# 示例数据
models = [
    Model(Name="motor100", Id=1, Value="100", Rate=10),
    Model(Name="motor200", Id=2, Value="200", Rate=20),
    Model(Name="motor300", Id=3, Value="300", Rate=30),
]

# 写入 JSON 文件
#WriteFile(models, 'models.json')

# 从 JSON 文件读取
loaded_models = ReadFile('models.json')

# 打印读取的数据
for model in loaded_models:
    print(model)


http://www.kler.cn/a/534863.html

相关文章:

  • 02-合并两个有序数组
  • k8s集群
  • Java进阶学习之路
  • 3.【BUUCTF】XSS-Lab1
  • 更换IP属地会影响网络连接速度吗
  • JVM 四虚拟机栈
  • 人工智能丨PyTorch 计算机视觉
  • [创业之路-286]:《产品开发管理-方法.流程.工具 》-1- IPD两个跨职能团队的组织
  • (安全防御)防火墙安全策略部署
  • 玩转Amazon Bedrock基础模型:解锁图像风格混搭的无限可能
  • 【论文复现】基于适应度-距离平衡的自适应引导差分进化算法用于考虑可再生能源的安全约束最优潮流问题
  • 【Go语言快速上手】第一部分:Go 语言基础
  • Angular-hello world
  • 青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用
  • C++【深入 STL--list 之 迭代器与反向迭代器】
  • 【鸿蒙HarmonyOS Next实战开发】视频压缩库VideoCompressor
  • Vue混入(Mixins)与插件开发深度解析
  • 常用抓包工具tcpdump、Fiddler、Charles、Wireshark 和 Sniffmaster 下载地址
  • 使用 CMake 自动管理 C/C++ 项目
  • C语言程序设计P6-5【应用指针进行程序设计 | 第五节】——指针与函数
  • OCR--光学字符识别
  • WebSocket推送数据快,条数多导致前端卡顿问题解决
  • 《Linux基础优化与常用软件包》
  • 【大数据技术】词频统计样例(hadoop+mapreduce+yarn)
  • Vue 3 30天精进之旅:Day 16 - 组合式API进阶
  • 用DeepSeek做网络系统规划方案