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

4 天前
 chesha1

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

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

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

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

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

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

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

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

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

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

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

© 2021 V2EX