【问题标题】:Is JSON used only for JavaScript?JSON 是否仅用于 JavaScript?
【发布时间】:2010-10-05 01:29:07
【问题描述】:

我在数据库中存储了一个表示一组属性的 JSON 字符串。在后面的代码中,我将其导出并用于一些自定义逻辑。本质上,我只是将它用作存储机制。我知道 XML 更适合于此,但我读到 JSON 更快且更受欢迎。

如果不打算在客户端使用字符串,那么使用 JSON 是一种好习惯吗?

【问题讨论】:

    标签: javascript asp.net database json


    【解决方案1】:

    JSON 是存储结构化数据的一种完全有效的方式,并且比 XML 更简单、更简洁。我不认为使用它是一种“不好的做法”,原因与使用 XML 的原因相同,只要您理解并且可以接受它的局限性。

    【讨论】:

      【解决方案2】:

      是的,我认为 JSON 很棒。它是一个开放标准,可以被任何编程语言使用。大多数编程语言也有解析和编码 JSON 的库。

      【讨论】:

        【解决方案3】:

        我不能说这是一种好的做法,但它让我觉得很奇怪。在 SQL 数据库中包含 XML 字段至少是可查询的(SQL Server 2000 或更高版本、MySQL 等),但通常是元数据的最后手段。

        JSON 通常是 JavaScript 和后端之间的载体,而不是存储本身,除非您有 JSON 后端 document orientated database,例如 CouchDBSOLR,因为 JSON 非常适合存储文档。

        并不是说我不同意将 JSON 用作基于 XML 的简单(即不序列化引用)数据序列化器,但我不会仅仅为了它而讨论 JSON 与 XML 之争:) .

        如果您没有使用 JSON 来实现 2 种语言之间的可移植性,并且您确信永远不会从 SQL 查询数据,那么使用 .NET 的默认序列化会更好。

        【讨论】:

          【解决方案4】:

          JSON 更短,因此它会在您的数据库中使用更少的空间。我可能会使用它而不是 XML 或编写我自己的格式。

          另一方面,搜索匹配项会很糟糕——你将不得不使用“where json like '% somevalue %'”,这将非常缓慢。这与任何其他文本存储策略(包括 xml)相同。

          【讨论】:

            【解决方案5】:

            JSON 只是一种类似于 XML 的标记语言,由于其规范更严格,因此体积更小,生成和解析速度更快。因此,从这方面来看,如果您需要临时结构化标记,那么在数据库中使用它是完全可以接受的(并且您绝对确定使用表是不可能的和/或最佳解决方案)。

            但是,您没有说明您使用的是什么数据库。如果是 SQL Server 2005 或更高版本,那么数据库本身在处理 XML 时具有广泛的功能,包括 XML 数据类型、XQuery 支持以及将 XQuery 表达式作为执行计划的一部分进行优化的能力。因此,如果是这种情况,我会更倾向于使用 XML 并利用数据库的功能。

            【讨论】:

              【解决方案6】:

              您不是唯一一个使用 JSON 进行数据存储的人。 CouchDB 是一个面向文档的数据库,它使用 JSON 来存储信息。他们最初将该信息存储为 XML,然后切换到 JSON。查询是通过旧的 HTTP 完成的。

              顺便说一句,CouchDB 最近受到了一些关注,并得到了 IBMApache Software Foundation 的支持。它是用 Erlang 编写的,并且承诺很多(恕我直言)。

              【讨论】:

                【解决方案7】:

                请记住,JSON 具有与 XML 作为后端数据存储相同的所有问题;也就是说,它绝不会取代关系数据库甚至是固定大小的二进制格式。如果您有数百万行并且需要随机访问,那么使用 JSON 会遇到与使用 XML 相同的基本性能问题。我怀疑你是否打算将它用于这种数据存储场景,但你永远不知道......已经尝试过奇怪的事情:)

                【讨论】:

                  【解决方案8】:

                  您不应该使用 JSON 或 XML 在关系数据库中存储数据。 JSON 和 XML 是序列化格式,可用于将数据存储在文件中或通过网络发送。

                  如果你想存储一组属性,只需为其创建一个表,每一行都对应一个属性。这样就可以使用普通的 SQL 查询数据了。

                  【讨论】:

                  • 当我知道不需要拆开对象来进行查询时,我会将其存储在数据库中。
                  • 完全正确 - 虽然不是最佳的,但在某些情况下,您希望存储“原子”的结构化数据,即仅用作实体,而不是分段。如果是这样,将其分解为行和列只是开销。虽然将这些存储在 RDBMS 本身很浪费(键/值存储会更好),但如果你只有这样一个数据库,它可能是一个不错的选择。
                  猜你喜欢
                  • 1970-01-01
                  • 2023-01-30
                  • 2019-06-20
                  • 2011-11-24
                  • 2017-03-19
                  • 2021-12-16
                  • 2012-07-30
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多