JSON

超越XML和JSON:YAML,Java开发人员的新选择[3]

字号+ 作者:H5之家 来源:H5之家 2018-01-21 17:00 我要评论( )

YAMLVS.XML和JSON正如你从前面例子中清楚地看到那样,YAML没有XML那么啰嗦了,大部分YAML文件内容就是真实的数据,没有了无穷尽的打开和关闭标记列表,在XML中,

  YAML VS. XML和JSON

  正如你从前面例子中清楚地看到那样,YAML没有XML那么啰嗦了,大部分YAML文件内容就是真实的数据,没有了无穷尽的打开和关闭标记列表,在XML中,这些标记往往比它们描述的数据还大,YAML更适合你需要手工维护的数据文件类型。

  YAML没有提供方案或DTD概念,因此无法验证文件格式是否符合你的预期,XML的啰嗦也有它的价值,但总的说来是因为XML的成熟使它具有大量额外的工具来验证它的格式,而YAML还没有。

  JSON也适合与任何数据,它主要面向提高性能和文件尺寸的大小,因为它几乎不使用空格和关闭标签,然而,JSON文件的内容增加了复杂性,它的关闭标识就象下地狱一样,这就是JavaFx代码(它基于JSON)中可见的最痛苦的了,在数据文件中,使用UI结构使结果更复杂,其复杂程度几乎使文件变得无法理解。

  查看的JavaFx示例代码(点击“Edit this page”链接),请特别留心它是如何结束的。    

                    }
                      }
                    }
                }
              ]
            }
        }
      center: bookPanel
    }

  掺和了{}结构和[]清单,使得手工维护大型的JSON风格的文件变得相当困难,YAML使用它的空格缩进方法巧妙地解决了这个问题,当然,无论何时,你都可以切换到JSON风格的语法(如在底层节点)。

  解析YAML文件最常用的Java库是JvYAML(https://jvyaml.dev.java.net/),JRuby(在Java VM上运行动态语言的Ruby版本)在它的Ruby on Rails框架中的进出口使用JvYAML,JvYAML提供了文件一般处理的功能(在前面那个例子中,它返回了一个标准Java字符串、Long、Map和List对象的嵌套体系结构),使用静态dump()方法保存为文件,然后使用静态load()方法载入,例如:

YAML.dump(Object data, Writer output);
Object data = YAML.load(Reader io);


   参考侧边栏2:基于YAML的开源项目了解关于基于YAML的开源项目信息,以及如何在Java中装入一个说明的UI.

  侧边栏2:基于YAML的开源项目

  请原谅我在这里厚脸皮地介绍我们自己的开源项目,当我真的不知道除了JRuby外其他的基于YAML的开源项目,JRuby的Ruby on Rails框架实现严重依赖YAML,而不是XML或JSON,看看我的Java Builder库吧(),它利用YAML文件提供了一种方法定义屏幕控制、布局、事件线路和数据绑定,以实现将说明UI装入Java。

  实际上,YAML文件真的非常简单,甚至你可以使用任何的文本编辑器都可以维护它,但有些专门的文本编辑器提供了语法加亮功能,这对维护工作很有帮助,对Eclipse而言,有Eclipse YAML editor(),对NetBeans而言,你可以使用来自Ruby包()的YAML编辑器,然而,在NetBeans 6.1中的YAML编辑器并没有什么用处,它只支持YAML很小的一个子集(例如:它不支持block literal),希望在NetBeans 6.5中的YAML编辑器解决了这个问题。

  我没有机会测试IntelliJ IDEA,但我推测它的Ruby on Rails插件
(+IDEA+Ruby+Plugin)附带了YAML编辑器。

添加YAML工具

过分啰嗦的XML格式大多数情况下都是重复的,YAML和来自Java的用法在你的下一个项目中应该作为一个可选的非常棒的选择,在未来的学习中,请访问YAML的WiKi页面(),它对YAML的高级特性如数据合并和数据计算有非常优秀的描述,也可以访问YAML的官方站点()。

[1]  [2]  [3]  

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • clarancepeng

    clarancepeng

    2018-01-21 18:07

  • java 生成json与解析

    java 生成json与解析

    2018-01-21 11:15

  • 如何在QML应用中使用Javascript解析JSON

    如何在QML应用中使用Javascript解析JSON

    2018-01-20 14:01

  • Javascript 不可逆加密

    Javascript 不可逆加密

    2018-01-20 12:06

网友点评
"