如何在磁盘上存储 JSON 数据?

Posted

技术标签:

【中文标题】如何在磁盘上存储 JSON 数据?【英文标题】:How do I store JSON data on a disk? 【发布时间】:2011-01-13 05:51:37 【问题描述】:

我对 JSON 完全陌生,将来可能需要使用它,所以我阅读了一些关于它的内容。 SO上有很多关于JSON的问题。我用谷歌找到了很多文章,我阅读了 json.org,但我不明白如何存储 JSON 数据。

JSON 是一种轻量级的数据交换格式。那么我如何存储它的数据呢?在文件中?在数据库中?有关系吗?

我可以使用它将数据传递给jsTree(jsTree 是一个基于 javascript 的跨浏览器树组件。它被打包为一个 jQuery 插件。)它将与 Wordpress 一起使用。我想了解我将如何存储数据?在一个文件中?文本文件?在 Wordpress 数据库中?哪个更快?更好用吗?

当前状态在任何编码之前,没有应用程序在运行

我正在准备源数据,到目前为止,我的 源 csv 文件大小为 235KB,大​​约有 700 行(行 = 未来节点/叶子)。我使用 csv 文件只是为了收集数据,然后我将上传/更新网络服务器上的数据源。 假设每周增加 5-10 个。 该文件位于我的本地计算机上,并将(以某种方式)存储在虚拟主机服务器上。请注意,我将在 Wordpress 中使用整个应用程序 jsTree+JSON 我想我可以使用这个:Now parse Client side json with Wordpress

【问题讨论】:

对于数据交换格式,通常数据已经存储在数据库中,格式只是数据的临时表示。我认为很少存储这种表示形式(无论是 JSON、XML 等)。例如,您可能会从某个第 3 方的 Web 服务获取 JSON,但他们不一定存储 JSON。 @Michael Easter:到目前为止我还没有存储数据。我正在发现它是如何发生的。 【参考方案1】:

我想首先要理解的是 JSON 只是表示信息的一种方式。您可以随心所欲地存储数据。如果你有一个关系数据库,你可能会想出一个合理的方法来来回转换数据。

 
  "id": 321
  "name" : "Jim",
  "age" : 27,
  "email" : "jim@jimsoft.com"

可能在 xml 中表示为

<person>
   <id>321</id>
   <name>Jim</name>
   <age>27</age>
   <email>jim@jimsoft.com</email>
</person>

或者可能存储在一个看起来像的表中

_______________________________________
| id | name | age | email              |
========================================
|321 | Jim  | 27  |jim@jimsoft.com     |
----------------------------------------

因此,如果您可以随心所欲地存储信息。您只需要某种方法将数据序列化/反序列化为您想要的任何形式。

话虽如此,如果您需要存储 JSON 并将其存储为文件是行不通的,您可能需要查看CouchDB 或MongoDB。它们是实际存储 JSON 文档的面向文档的数据库。它们可以让你存储任何你想要的 JSON 文档。您可以直接构建视图并查询数据,而无需将数据转换为不同的形式。

【讨论】:

@Steve g:如果一切都将“发生在 wordpress 中”,那么拥有另一个数据库是个好主意吗?【参考方案2】:

CouchDB 之类的东西是一个将其存储在内部文件中的数据库。大多数人根本不 /store/ JSON,他们生成它并发送它,或者解析它并处理它。

JSON 是序列化数据的理想格式,但与任何其他序列化格式相同的警告也适用于它。您是否将 XML 存储在数据库中?通常不会。不同之处在于 XML 牺牲了人类使用,而 JSON 牺牲了易于解析和快速。

JSON 并不是 CSV 的真正替代品。将 CSV 视为格式松散的特定于表的转储机制。在 excel 中导出 JSON 并没有多大意义。

【讨论】:

【参考方案3】:

将其存储在数据库或文件中的天气并不重要。关键是您需要能够将其作为字符串获取(使用 HTTP 或一些服务器端脚本)。

例如,如果您将其保存为名为 data.json 的文件,您可以使用 ajax 来获取它,但如果您将其存储在数据库中,则需要使用某种服务器脚本(尽管您仍然可以使用 ajax) .

如果您对 xml 有任何经验,只需将 json 视为同一事物,它只是数据的字符串表示形式。

【讨论】:

【参考方案4】:

JSON 是一种交换格式。如果需要,您可以将其存储在文件或数据库中,就像任何其他格式一样,但这是否是一个好主意取决于您正在做什么。

您说“到目前为止,我的源 csv 文件大小为 235KB,大约有 700 行(节点/叶子)”。您是否正在考虑从 CSV 切换到 JSON? (您并没有真正说出来。)您还说“这个数字会增长,比如说每周增加 5-10 个”。对于将应用增量更改的大型文件,CSV 或 JSON 都不是真正的最佳选择,除非使用 CSV,您可以有效地附加数据。如果您只需要追加,您可以坚持使用 CSV,但如果您需要进行其他修改,我可能会将数据分解到数据库中,以便有效地进行更新。

其实你说的数据量很小,每周更新这么少,大概不用担心效率问题。做你想做的。 :-)

【讨论】:

@Laurence Gonsalves:我认为 235KB 的 html 太大了。所以我可能需要使用其他东西。 @Laurence:当谈到增量更改时,我正在考虑将增量数据存储在不同文件中并应用一些逻辑来识别要查询或聚合查询的文件的设计!!!例如:(1)显示带有分页的表格数据的页面。我不会将所有这些数据存储在一个 .json 中,而是将它们存储在 10 个 .json 文件中。(2) 显示按国家/地区划分的人口报告的网页正在从 .json 文件中获取数据。我会将增量数据存储在 other>.json 文件中。在生成报告时,我会汇总信息。您的想法是什么? @user2504156 听起来它需要一个自己的问题。 cmets太狭窄了,我无法理解您所描述的内容,或者我无法提供任何有意义的想法。我确实想知道为什么您要存储 JSON 而不是存储在数据库中,然后只使用 JSON 传输到客户端。

以上是关于如何在磁盘上存储 JSON 数据?的主要内容,如果未能解决你的问题,请参考以下文章

MySql数据是如何存储在磁盘上存储的?

Mysql中每一行的实际数据在磁盘上是如何存储的?

Mysql中每一行的实际数据在磁盘上是如何存储的?

MySQL:26 每一行的实际数据在磁盘上是如何存储的?

如何实现数据迁移?

让chatGPT当我的老师如何? 通过和chatGPT交互式学习,了解在ES中,一条JSON数据是如何写到磁盘上的