我应该使用YAML或JSON来存储我的Perl数据吗?

Pau*_*han 46 perl json yaml

在过去6个月左右的时间里,我一直在使用YAML格式取得了一定的成功.

但是,YAML解析器的纯Perl实现对于手写可读文件来说相当烦躁,并且(在我看来)有令人讨厌的怪癖,例如在文件末尾需要换行.与我的其他程序相比,它也非常缓慢.

我正在思考我的项目的下一个演变,我正在考虑使用JSON(YAML的一个大部分严格的子集,事实证明).但是哪种格式在Perl中拥有最多的社区牵引力和努力?

现在看来,Perl,YAML或JSON中的简单数据描述的长期格式更好,为什么?

Sch*_*ern 81

YAML vs JSON在Perl中是非常不稳定的,我承认我倾向于处于中间位置.我会建议,或者要让你获得尽可能多的社区牵引力.我会根据格式的各种优缺点做出决定.我分解了各种数据序列化选项(我要去社区维基,所以人们可以添加它):

YAML职业选手

  • 人性化,人们甚至不知道它就写了基本的YAML
  • WYSIWYG字符串
  • 富有表现力(它具有TMTOWDI性质)
  • 可扩展类型/元数据系统
  • Perl兼容的数据类型
  • 手提
  • 熟悉(很多内联和字符串语法看起来像Perl代码)
  • 如果你有一个编译器(YAML :: XS)的好实现
  • 良好的转储Perl数据的能力
  • 紧凑使用屏幕空间(可以,您可以格式化为一行)

YAML Cons

  • 大规格
  • 不可靠/不完整的纯Perl实现
  • 作为语法的空格可能是有争议的.

JSON专业人士

  • 人类可读/可写
  • 小规格
  • 好的实施
  • 手提
  • Perlish语法
  • YAML 1.2是JSON的超集
  • 紧凑使用屏幕空间
  • Perl友好数据类型
  • 很多东西都处理JSON

JSON缺点

  • 字符串不是WYSIWYG
  • 没有可扩展性
  • 一些Perl结构必须特别表达(对象和globs)
  • 缺乏可表达性

XML专业人士

  • 广泛使用
  • Web开发人员熟悉的语法
  • 大型的良好XML模块
  • 架构
  • 搜索和转换数据的技术
  • 手提

XML缺点

  • 繁琐的人类阅读和写作
  • Perl的外部数据结构
  • 缺乏可表达性
  • 大规格
  • 详细

Perl/Data :: Dumper Pros

  • 没有依赖
  • 令人惊讶的紧凑(带有正确的标志)
  • Perl友好
  • 几乎可以转储任何东西(通过DDS)
  • 表现的
  • 紧凑使用屏幕空间
  • WYSIWYG字符串

Perl/Data :: Dumper Cons

  • 非便携式(对其他语言)
  • 不安全(没有英雄的措施)
  • 对非Perl程序员来说难以理解

可存储的优点

  • 紧凑?(没有数字备份)
  • 快速?(没有数字备份)

可存储的利弊

  • 人类充满敌意
  • 与Storable版本不兼容
  • 非便携式(对其他语言)


Ada*_*ire 13

与大多数事情一样,这取决于.我想如果你想要速度和互操作性(与其他语言一样),请使用JSON,特别是JSON :: XS.

如果你想要Perl模块只能使用的东西,请坚持使用YAML.在CPAN上找到支持使用YAML或依赖于YAML的数据描述的Perl模块比JSON更常见.

请注意,我不是权威,这种观点主要基于预感和猜想.特别是,我没有描述JSON :: XS与YAML :: XS.如果我在进攻上无知,我只能希望我会让一个人愤怒,通过纠正我来为讨论带来有用的信息.


PHP*_*Pst 9

这完全取决于人类的可读性,如果这是您主要考虑的选择YAML:

YAML:

american:
  - Boston Red Sox
  - Detroit Tigers
  - New York Yankees
national:
  - New York Mets
  - Chicago Cubs
  - Atlanta Braves
Run Code Online (Sandbox Code Playgroud)

JSON:

{
  "american": [
    "Boston Red Sox", 
    "Detroit Tigers", 
    "New York Yankees"
  ], 
  "national": [
    "New York Mets", 
    "Chicago Cubs", 
    "Atlanta Braves"
  ]
}
Run Code Online (Sandbox Code Playgroud)

  • 虽然可读性有点主观,但其中一个看起来像我可能在电子邮件中写的东西,而其中一个不是. (7认同)
  • 在YAML你可以发表评论.这在JSON中是不可能的.这是人类*可写性*的一个主要问题. (3认同)
  • 不同的人会有不同的答案,哪一个更可读:) (2认同)