2010-12-09 76 views
0

我正在和朋友做一个游戏。现在有一个关于水平的问题。第一个版本是用XML构建的。我不喜欢它的原因有很多:数据太多,我们使用的解析器存在一些问题。我们正在使用Boost,所以我决定看看json-parser文档格式

该结构小得多,并进行了优化。你怎么看,从强大的xml转变为简单的json,这不是太激进吗?是否有足够的json结构能力来组织大型游戏级别的大量额外数据和属性?

回答

2

我在使用python编写的webapps中使用JSON很多 - 对于XML和JSON都有很好的解码器。除了XML需要更多空间外,实际上没有什么区别,但更具可读性。 JSON看起来已经很像Python字典了,所以这很有道理。可能是JSON在网络上更常见的主要原因是JSON-RPC非常好,而XML-RPC没有想到,而且SOAP太重了。

因此,它取决于您是否可以找到一个好的JSON解码器,它的速度足够满足您的需求。我不知道经常用C/C++进行提升或工作。

+0

此外,XML是DOM风格编码,顺序分析等的更好匹配,而JSON更适合字典,关联数组等。所以它取决于你如何编码你的游戏到目前为止,我猜。 – jambox 2010-12-09 12:21:30

0

我认为JSON比XML更适合面向数据的用例(比如我的假设)。 XML作为标记语言是很好的;或者当需要混合和匹配多个词汇时。 我没有发现XML更强大的这种用例;并且没有理由不能将您想要的任何数据映射到JSON结构。使用XML很大程度上来源于处理工具和XML词汇表,而不是本身相当简单的核心标记语言。

很有可能XML和JSON都可以为你工作,所以也许只是看看哪个更适合你的开发风格。

0

如果您已经在使用将其放入DOM对象的阅读器,我认为从XML切换到JSON是不值得的麻烦,除非您在过程中最终更改了数据格式。特别是如果您使用编辑器创建程序数据,因为您将拥有比JSON更好的编辑XML文档的工具。这些DOM对象的解析时间很可能在实现之间不会有太大的差异,但如果这是一个问题,那么您的JSON实例DOM对象可能会占用较少的空间。您将能够以XML或JSON格式存储您需要的任何内容,所以不应该担心。作为一个关卡描述语言,我会使用XML,因为我可以定义一个模式,如果需要的话,手动编辑更容易。此外,听起来像您可能希望能够在数据正在读取时有效地创建这些级别,并且如果不需要尽快使用所有额外的实例数据,则可以忽略这些数据。一个XML SAX或拉解析器将是理想的。

现在我的简短答案已经结束,我会多了解一些信息,以帮助您更好地为自己做出决定。

你想如何访问数据?你想简单地阅读它,并有一个大对象访问,或者你只需​​要查看一次数据来创建基于这些信息的对象?在分析过程中,您是否对性能有任何担忧,以及您可以多快地响应正在读入的新信息?您的数据格式可能会改变很多?你想提供一个可以在应用程序之外共享这些信息的标准吗?我使用什么编程语言?根据语言的不同,一些语言对于JSON和XML具有非常好的工具。

根据与应用程序相关的用例,给出唯一的选择JSON或XML。

如果我需要真正调整解析器中的性能,并使用可以描述和共享的非常结构化的格式,并且不太可能经常更改,那么我会使用XML。我可以使用模式来描述数据结构的要求,并允许其他人轻松地支持我的数据文件。如果我的信息很大,我也会使用XML,并且我希望有机会以块的形式解析数据,并将它们直接存储到对象中,这样会比使用通用DOM模型和解析器的脚印更小。我会使用SAX推送阅读器或流读取器,如果我需要在读入信息时对其进行响应,则可以使用SAX推送阅读器或流读取器。有许多优秀的库可以快速轻松地为XML执行此操作。如果我需要手动编辑数据或为了调试目的而打印出来,那么XML文档就已经处于良好的格式。

我会使用JSON,如果我需要保存实例文档空间,我想要一个DOM类型的对象。如果我有两个应用程序只是尝试传递Python和Java等数据,我会使用JSON,因为它可以将这些实例对象与setter和getter读取到一起,而不需要复杂的framwework,尽管这会让事情变得缓慢。如果我的需要是仅序列化和传输数据对象,那么如果这些是我唯一的选择,JSON将是我对XML的选择。