一个服务的配置文件用什么格式(比如 xml, json, yaml)比较好?

97 天前
 chesha1

很多服务需要一个配置文件,有一些常见格式:

一个服务用什么格式的配置文件,这个有什么考量吗?用什么比较好?

4290 次点击
所在节点    程序员
55 条回复
summerwar
97 天前
用啥都可以,你最熟悉啥用啥就行了,都是读取文件,然后把配置拉到代码里
dreamk
97 天前
toml 是目前最先进的配置文件格式
chendy
97 天前
熟悉啥用啥,不知道用啥就 json
反正逻辑都是一样的,读文件,反序列化,用
0o0O0o0O0o
97 天前
其实我觉得你可以都用,我就很喜欢同时支持命令行参数, env, yaml 和 json 的项目
lizhien
97 天前
@dreamk 不支持直接写数组啊
dcsuibian
97 天前
选择 yaml ,选择成功
kirory
97 天前
还有 .ini, .env
Hopetree
97 天前
yaml 是目前最好的配置格式,就相当于 markdown 格式一样的存在
aloxaf
97 天前
简单的用 toml ,复杂的用 yaml
json 、xml 这种不是给人读的
CMakeLists.txt 这种属于 DSL 了
cwcc
97 天前
如果只是读取的话,我个人 yaml 、json 是最推荐的。json 的好处就是兼容性极广,缺点就是不能注释且比较冗余。yaml 的好处就是可读性强且兼容 json ,缺点就是写的话比较混乱。toml 个人觉得有一定门槛但未来可期,ini 太过简单,xml 适合同时读写的复杂结构。
IvanLi127
97 天前
我选 toml ,如果没复杂的嵌套结构,还是环境变量和 .env 文件比较舒服。如果需要被程序修改的需求,我选 yaml 或 json 。
flyqie
97 天前
我个人环境变量、.env 、.ini 写的都比较多,再加上不喜欢那种缩进,一直很偏好 toml
Trim21
97 天前
yaml 或者 toml
pb7412221
97 天前
json 是最简单最容易的 唯一的缺点不能写注释 在 json5 中也解决的
pb7412221
97 天前
@cwcc json5 可以写注释了
Philippa
97 天前
支持楼上,选择 json 。因为 json 简单易懂,所有人都有相关基础,是最好用的。
toml 有点冷门,很多人不熟悉怎么用。单是先进是不够的。
yaml 就算了吧,你看看 k8s 的那堆文件还有 nindent ,缩进错一丢丢都不行,偶尔字符串偶尔数字,array 表达让人迷惑。
agagega
97 天前
扩展性:XML>YAML>JSON>TOML
安全性:TOML>YAML>JSON>XML
人类读写:YAML>TOML>JSON>XML

苹果有个叫 pkl 的开源项目,大致相当于给不同的配置文件格式准备的配置文件,你可能会感兴趣

至于 CMakeLists.txt ,即使再怎么吹 modern ,本质上还是一个奇怪的命令式语言,用它还不如用 Lua 或者 Ruby 正经搞个 DSL ,我宁愿写 XML 也不想写它
kenvix
97 天前
我不知道为什么这么多人喜欢 yaml 。这玩意简直就是一坨屎,我永远不知道当前缩进对的是哪里,这个缩进有没有问题。IDE 也猜不到想表达这块代码的意图位置是哪里。
但凡写过几百行的 yaml 应该和我有同感
kenvix
97 天前
如果是几百行甚至上千行以上,有各种复杂逻辑结构的,你就应该用 XML 。明确的作用域和结尾复述对人类心智真的很友好。
如果比较简单,那就 TOML 。
如果极其简单,那就.env

yaml 适合 100 行以下规模,超过这个我看见就恶心

另外 hocon 也可以考虑下
GeekGao
97 天前
参考:

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1073113

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX