You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用json.load读取配置文件后,如何保留原有键值对顺序?

解决方案:保留JSON配置文件的原有键顺序

要解决读取和写入.config文件时保留手动设置的键顺序问题,可以通过以下步骤实现:

1. 读取文件时保留原有顺序

使用json.load()的object_pairs_hook参数,传入collections.OrderedDict,让JSON解析器直接按文件中的键顺序生成有序字典:

from collections import OrderedDict
import json

# 读取配置文件
with open(config_file_path_name, 'r') as i:
    self.contents_dict = json.load(i, object_pairs_hook=OrderedDict)

这个钩子会捕获JSON对象解析时的键值对顺序,直接构建OrderedDict,完美保留你手动设置的字段顺序。

2. 写入文件时维持顺序

写入文件时,确保json.dump()的sort_keys参数设为False(默认值为False,显式声明更稳妥),这样会按OrderedDict的顺序写入内容:

# 写入配置文件
with open(config_file_path_name, 'w') as o:
    json.dump(self.contents_dict, o, indent=2, sort_keys=False)

indent=2是为了保持你手动格式化的缩进风格,和示例中的格式一致。

补充说明

  • 若使用Python 3.7及以上版本,CPython的普通字典已原生支持插入顺序保留。此时无需使用OrderedDict,直接用json.load()读取,写入时设置sort_keys=False即可保留文件原有顺序,但OrderedDict的写法能兼容更低版本的Python,通用性更强。
  • 注意JSON标准要求使用双引号,你的示例中用了单引号,虽然Python的json.load()可能可以解析,但建议统一使用双引号避免潜在问题。

内容的提问来源于stack exchange,提问作者Guillermo Aguero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:36:23