YAML似乎比JSON格式的对象更可读,除了可读性之外,PyAML与JSON相比有哪些优点或缺点?我们应该如何在两者之间做出决定,请注意,我不是在问两者之间的区别,而是关于为什么和何时使用一个而不是另一个的建议?
ssgvzors1#
JSON比YAML更正式。恕我直言:YAML更适合快速创建和理解软件模块的简单配置文件;JSON更适合快速实现和实现软件模块之间的简单数据传输。
imzjd6km2#
YAML和JSON之间有一个或两个“大的”差异,可以(应该)迅速说明,这些差异在全面的答案中缺失(或不突出),就像问题评论中提到的那样。
虽然YAML does not permit TAB characters for indentation,它仍然是一个缩进定义的格式。如果您认为您的文件可能会被错误处理和挤压,从白色的Angular 来看(例如,从网页上粘贴的副本),你可能更喜欢JSON。
你可以指定一个只包含数字的JSON键,但键仍然是一个字符串,并且如果要在你的语言中转换成实际的int,则需要一个约定或格式规范。如果你需要真正的数字键,你可能更喜欢YAML。
int
我认为我说所有有效的JSON都是有效的YAML是正确的,即使是在没有缩进定义的JSON部分中接受TAB字符。如果您能够负担得起使用YAML解析器,那么如果您想要这个限制,您也可以使用JSON。
即使是现在,我认为这是相当无可争议的说,你几乎可以找到JSON支持,所以选择JSON将最大化你的兼容性。
所以TOML是一个很好的候选人:
如果你可以失去通用支持,这是YAML的一个很好的替代品,提供了一些漂亮的紧凑哈希表定义替代品,具有像JSON这样的非缩进格式的健壮性,但遗憾的是,仍然没有真正的数字键。
对不起,Minas,我今天不会说任何关于XML的好话。
2条答案
按热度按时间ssgvzors1#
JSON比YAML更正式。恕我直言:
YAML更适合快速创建和理解软件模块的简单配置文件;
JSON更适合快速实现和实现软件模块之间的简单数据传输。
imzjd6km2#
YAML和JSON之间有一个或两个“大的”差异,可以(应该)迅速说明,这些差异在全面的答案中缺失(或不突出),就像问题评论中提到的那样。
YAML定义缩进
虽然YAML does not permit TAB characters for indentation,它仍然是一个缩进定义的格式。如果您认为您的文件可能会被错误处理和挤压,从白色的Angular 来看(例如,从网页上粘贴的副本),你可能更喜欢JSON。
JSON不支持数字键
你可以指定一个只包含数字的JSON键,但键仍然是一个字符串,并且如果要在你的语言中转换成实际的
int
,则需要一个约定或格式规范。如果你需要真正的数字键,你可能更喜欢YAML。YAML是JSON的超集
我认为我说所有有效的JSON都是有效的YAML是正确的,即使是在没有缩进定义的JSON部分中接受TAB字符。如果您能够负担得起使用YAML解析器,那么如果您想要这个限制,您也可以使用JSON。
JSON更普及
即使是现在,我认为这是相当无可争议的说,你几乎可以找到JSON支持,所以选择JSON将最大化你的兼容性。
你想过TOML吗
所以TOML是一个很好的候选人:
如果你可以失去通用支持,这是YAML的一个很好的替代品,提供了一些漂亮的紧凑哈希表定义替代品,具有像JSON这样的非缩进格式的健壮性,但遗憾的是,仍然没有真正的数字键。
XML
对不起,Minas,我今天不会说任何关于XML的好话。