我和朋友一起做游戏。现在有关于关卡的问题。第一个版本是使用XML构建的。我不喜欢它有几个原因:数据太多,我们使用的解析器存在一些问题。我们正在使用Boost,因此我决定查看json-parser。
结构更小,更优化。您如何看待,从强大的xml变为简单的json,这不是太激进吗? json结构能力是否足以组织具有大量额外数据和属性的大型游戏级别?
答案 0 :(得分:2)
我在用python编写的webapps中经常使用JSON--对于XML和JSON都有很好的解码器。确实没有太大的区别,除了XML占用更多的空间,但更具可读性。 JSON看起来几乎就像一个Python字典,所以这是有道理的。 JSON在网络上更常见的主要原因可能是JSON-RPC相当不错,而XML-RPC却很少被考虑,而且SOAP太重了。
所以这取决于你是否可以找到一个好的JSON解码器,这足以满足你的需求。我不经常使用C / C ++来提升或工作。
答案 1 :(得分:0)
我认为JSON比XML更适合面向数据的用例(比如你的假设)。 XML作为标记语言很好;或者当必须混合和匹配多个词汇表时。 我没有发现XML对这种用例更强大;并且没有理由不能将您想要的任何数据映射到JSON结构。使用XML,很多功能来自处理工具和XML词汇表,而不是核心标记语言本身相当简单。
有可能XML和JSON实际上都适合你,所以也许只看到它有哪些 为您的开发风格提供更好的库。
答案 2 :(得分:0)
如果您已经在使用将其放入DOM对象的阅读器,我认为除非您最终在此过程中更改数据格式,否则从XML切换到JSON是不值得的。特别是如果您使用编辑器来创建程序的数据,因为您将拥有比JSON更好的编辑XML文档的工具。这些DOM对象的解析时间很可能在实现之间没有太大差异,但是如果这是一个问题,那么JSON实例DOM对象可能会占用更少的空间。您将能够以XML或JSON存储您需要的任何内容,因此不必担心。作为一种关卡描述语言,我会使用XML,因为我可以定义一个模式,如果需要,可以更容易手动编辑。此外,您可能希望能够在读取数据时有效地创建这些级别,并且如果不尽快需要,则忽略所有额外的实例数据。 XML SAX或pull解析器将是理想的选择。
既然我的简短回答已经结束,我会更多地了解可能有助于您更好地自行决定的信息。
您想如何访问数据?您是想简单地阅读它并拥有一个可以访问的大对象,还是只需要查看一次数据以根据该信息创建对象?您是否对解析期间的性能有任何疑虑,以及您对读取的新信息的响应速度有多快?您的数据格式是否可能会发生很大变化?您是否想提供一个标准,可以在您的应用程序之外共享此信息?我使用什么编程语言?有些语言非常适合JSON与XML的工具,具体取决于语言。
根据与应用程序相关的用例,我将决定JSON或XML的唯一选择。
如果我需要在我的解析器中调整性能并且具有可以描述和共享的非常结构化的格式并且不太可能经常更改,我会使用XML。我可以使用模式来描述数据结构要求,这将允许其他人轻松支持我的数据文件。如果我的信息很大,我也会使用XML,并且我希望有机会以块的形式解析数据并将它们直接存储到对象中,这些对象最终会比使用通用DOM模型和解析器更小。我会使用SAX推读器或流读取器,如果我需要在读入时响应信息,我可以使用它。有许多好的库可以快速,轻松地为XML做到这一点。如果我需要经常手动编辑数据或打印出来用于调试目的,那么XML文档已经有了良好的格式。
如果我需要保存实例文档空间并且我想要一个DOM类型对象,我会使用JSON。如果我有两个应用程序只是尝试传递Python和Java等数据,我会使用JSON,因为它可以使用setter和getter将这些读取到实例对象中而不需要复杂的framwework,即使这可能会使事情变得缓慢。如果我只需要序列化和传输数据对象,那么JSON将是我对XML的选择,如果这些是我唯一的选择。