【发布时间】:2012-01-11 03:14:40
【问题描述】:
我喜欢 json 作为我编写的软件的配置文件格式。我喜欢它轻量级、简单且广泛支持的特点。但是,我发现 json 中有一些我真正喜欢的东西,它没有。
Json 没有多行字符串或此处的文档 (http://en.wikipedia.org/wiki/Here_document),当您希望 json 文件具有人类可读性和可编辑性时,这通常会非常尴尬。您可以使用字符串数组,但这是一个笨拙的解决方法。
Json 不允许 cmets。
如果您查看 unix 配置文件的格式,您会发现很多人都在设计自己的尴尬格式,而使用某种通用的东西确实更有意义。例如,以下是 Apache 配置文件中的一些代码:
RewriteEngine on
RewriteBase /temp
RewriteCond %{HTTP_ACCEPT} application/xhtml\+xml
RewriteCond %{HTTP_ACCEPT} !application/xhtml\+xml\s*;\s*q=0
RewriteCond %{REQUEST_URI} \.html
RewriteCond %{THE_REQUEST} HTTP/1\.1
RewriteRule t\.html t.xhtml [T=application/xhtml+xml]
基本上,这里发生的事情是他们发明了一种极其痛苦的方式来编写布尔函数 f(w,x,y,z)=w&!x&y&z。你想要一个合乎逻辑的“或”吗?他们也有一些单独的(丑陋的)机制。
这似乎指向某种数据描述语言,它简单且图灵不完整,但比 json 更具表现力、灵活和方便。有人知道这种语言吗?
在我看来,XML 太复杂了,lisp 表达式有错误的特性(图灵完备性)并且缺少正确的特性(这里是文档,表达性语法)。
[编辑] 标题具有误导性。我对json的下一次迭代并不感兴趣。我对作为 javascript 子集的语言不感兴趣。我对替代数据描述语言感兴趣。
【问题讨论】:
-
YAML?
-
@BalusC:有趣的建议 :-) 但是 YAML 似乎没有提供任何很好的方法来处理布尔函数/Apache 示例或类似风格的应用程序。
标签: json