【问题标题】:Is it bad to store JSON on disk?将 JSON 存储在磁盘上不好吗?
【发布时间】:2009-09-22 01:50:45
【问题描述】:

大多数情况下,我只是使用 XML 文件来存储配置信息并提供基本数据持久性。现在我正在构建一个需要存储一些 XML 类型数据的网站。但是,我已经在整个过程中广泛使用 JSON。直接存储 JSON 而不是 XML 是不是不好,还是应该存储 XML 并引入 XML 解析器。

【问题讨论】:

  • 为什么必须将 JSON 存储在 XML 中而不是将其存储在自己的文件中? XML 不是数据存储设备,因此您可能需要评估使用 XML 和 JSON 的原因。
  • 你没听懂问题。
  • @DevDevDev - 求问的人可能知道为什么这些答案都没有让你喜欢接受一个吗? :)

标签: javascript xml json


【解决方案1】:

一点也不差。虽然有更多的 XML 编辑器,所以如果您需要手动编辑文件,XML 可能会更好。

【讨论】:

  • 我认为如今在大多数编辑器中使用 javascript 语法高亮和代码折叠功能来阅读 JSON 一样容易。
【解决方案2】:

使用 XML 和 JSON 的区别是:

  • 找到支持编辑 XML 的好方法的编辑器要容易得多。我知道没有编辑器会为 JSON 执行此操作,但可能会有一些,我希望 :)

  • 极高的可移植性/互操作性 - 并非一切都可以原生读取 JSON,而如今几乎所有语言/框架都有 XML 库。

  • JSON 占用的空间更少

  • JSON 的处理速度可能更快,尤其是在 JavaScript 应用程序中,它是原生数据。

  • JSON 对于程序员来说更易于阅读(这是主观的,但我认识的每个人都同意这一点)。

现在,请注意一个共同点:一旦将 JSON 存储为 XML 有效负载,使用上面列出的纯 XML 的任何好处都会立即 100% 丧失

因此,指导方针如下:

  • 如果广泛的互操作性是一个问题,并且您与无法读取 JSON 的东西(例如可以原生读取 XML 的数据库)交谈,请使用 XML。

  • 否则,我建议使用 JSON

  • 永远不要使用 JSON 作为 XML 有效负载,除非由于现有协议需求而必须使用 XML 作为传输容器,并且与网络/存储丢失相比,将 JSON 编码到 XML 或从 XML 解码的成本高得令人望而却步由于双重编码(我很难想象这样一个合理的场景,但谁知道......)

更新:根据 cmets 中的信息删除了 Unicode 项目符号

【讨论】:

  • 在 JavaScript 中解析 JSON 不一定更快:如果您使用 Crockford 的 json2.js 而不是 eval,那么我观察到它比在 IE 中解析等效的 XML 慢。抱歉,我手头没有基准。
  • 您使用哪个库来解析 XML(纯粹出于好奇,以防我以后需要进行快速 XML 解析?)
  • 无,只是浏览器内置的 XML 解析东西。非 IE 浏览器中的 DOMParser 和 IE 中的 Microsoft.XMLDOM ActiveX 对象。
  • 什么语言没有JSON库?
  • JSON 处理速度更快,因为它比 XML 更简单。
【解决方案3】:

它只是数据,例如 XML。没有什么可以阻止将其保存到磁盘。

【讨论】:

    【解决方案4】:

    定义“坏”。它们都是纯文本格式。把自己打昏。

    【讨论】:

    • 我认为他的意思是如果这样做有明显的缺点或违反最佳实践:)
    【解决方案5】:

    如果您将数据存储为缓存(意味着它是一种格式,并且您必须以编程方式对其进行处理以“制作”它为 JSON。那么我说没问题。只要您的 JSON 的 consumer 读取本机JSON 然后将缓存数据保存到磁盘或内存是标准做法。

    但是,如果您以 JSON 格式存储需要人工交互“处理”的配置文件,那么我可能会重新考虑。将 JSON 用于简单的 Key:Value 对很酷,但除此之外,格式可能过于紧凑(意味着嵌套的 { 和 [ 括号可能难以破译)。

    【讨论】:

      【解决方案6】:

      当存在深度嵌套时,JSON 的一个潜在问题是可读性, 您实际上可能会看到]]]}],从而使调试变得困难

      【讨论】:

        猜你喜欢
        • 2012-08-02
        • 2011-01-13
        • 2021-11-25
        • 2012-05-13
        • 2012-01-20
        • 2011-06-08
        • 1970-01-01
        • 2011-10-04
        • 2020-07-18
        相关资源
        最近更新 更多