javascript - 如何使用 Javascript 将数据写入 JSON 文件

例如,我有一个 .JSON 文件,其中包含以下内容:

[{"honda": "accord", "color": "red"},{"ford": "focus", "color": "black"}]

将另一个对象 {"nissan": "sentra", "color": "green"} 推送到此 .json 数组中的 javascript 代码是什么使 .json 文件看起来像

[{"honda": "accord", "color": "red"},{"ford": "focus", "color": "black"},{"nissan": "sentra", "color": "green"}]

我问的原因是我在网上找到很多关于如何使用 AJAX 从 .json 文件中提取数据但不使用 AJAX 将新数据写入 .json 文件以更新 .json 文件的信息数据。

任何帮助将不胜感激!

最佳答案

您必须清楚“JSON”是什么意思。

有些人错误地使用术语 JSON 来指代普通的旧 JavaScript 对象,例如 [{a: 1}]。这个恰好是一个数组。如果要向数组中添加新元素,只需 push 即可,如

var arr = [{a: 1}];
arr.push({b: 2});

< [{a: 1}, {b: 2}]

JSON 这个词也可以用来指代以 JSON 格式编码的字符串:

var json = '[{"a": 1}]';

注意(单)引号表示这是一个字符串。如果你有这样一个从某个地方获得的字符串,你需要首先将它解析成一个 JavaScript 对象,使用 JSON.parse:

var obj = JSON.parse(json);

现在您可以以任何您想要的方式操作对象,包括如上所示的 push。如果你想把它放回 JSON 字符串,那么你使用 JSON.stringify:

var new_json = JSON.stringify(obj.push({b: 2}));
'[{"a": 1}, {"b": 1}]'

JSON 也被用作格式化数据的常用方法,以便将数据传输到服务器或从服务器传输数据,并可以将其保存(持久化)。这就是 ajax 的用武之地。Ajax 用于从服务器获取数据(通常为 JSON 格式)和/或将 JSON 格式的数据发送到服务器。如果您收到来自 JSON 格式的 ajax 请求的响应,您可能需要如上所述的 JSON.parse 它。然后您可以操作该对象,使用 JSON.stringify 将其重新转换为 JSON 格式,并使用另一个 ajax 调用将数据发送到服务器进行存储或其他操作。

您使用术语“JSON 文件”。通常,"file"一词用于指代某些设备上的物理文件(不是您在代码中处理的字符串或 JavaScript 对象)。浏览器无法访问您机器上的物理文件。它无法读取或写入它们。实际上,浏览器甚至没有"file"的概念。因此,您不能只在本地机器上读取或写入一些 JSON 文件。如果您要向服务器发送 JSON 或从服务器发送 JSON,那么当然,服务器可能会将 JSON 存储为文件,但更可能的是,服务器会根据从数据库中检索到的数据,基于一些 ajax 请求来构建 JSON ,或者在一些ajax请求中解码JSON,然后将相关数据存储回其数据库中。

你真的有一个“JSON 文件”吗?如果有,它在哪里存在,你从哪里得到它?您是否有一个 JSON 格式的字符串,您需要对其进行解析、mainpulate 并转换回一个新的 JSON 格式的字符串?您是否需要从服务器获取 JSON,并对其进行修改,然后将其发送回服务器?还是您的“JSON 文件”实际上只是一个 JavaScript 对象,您只需要使用普通的 JavaScript 逻辑进行操作?

https://stackoverflow.com/questions/32546100/

相关文章:

jquery - 通过 jQuery 将 JSON 数据发布到 ASP .NET MVC 4 Con

javascript - 在 HTML 数据属性上添加 JSON 是不是很糟糕?

java - Gson - 自动引号(“)转义?

php - 通过 JSON 发送 HTML 代码

json - 如何重用 Jersey 的 JSON/JAXB 进行序列化?

javascript - 在 JavaScript 中将 JSON 对象转换为 CSV 格式

c# - 如何使用 Newtonsoft.Json 包在 C#(4.0) 中解析我的 json 字符

javascript - 在javascript中将json对象写入文本文件

java - 仅当不为空或不为空时 Gson 序列化字段

json - 自定义 MarshalJSON() 永远不会在 Go 中被调用