您必须清楚“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 格式JSON.stringify
,并使用另一个 ajax 调用将数据发送到服务器进行存储或其他操作。
您使用术语“JSON 文件”。通常,“文件”一词用于指代某些设备上的物理文件(not您在代码中处理的字符串或 JavaScript 对象)。浏览器无法访问您计算机上的物理文件。它无法读取或写入它们。实际上,浏览器甚至没有真正的“文件”概念。因此,您不能只在本地计算机上读取或写入某些 JSON 文件。如果您要向服务器发送 JSON 或从服务器发送 JSON,那么当然,服务器可能会将 JSON 存储为文件,但更有可能的是,服务器会基于某些 ajax 请求、基于从数据库检索的数据来构造 JSON ,或者解码某个ajax请求中的JSON,然后将相关数据存储回其数据库中。
您真的有“JSON 文件”吗?如果有,它存在于哪里以及您从哪里获取它?您是否有一个 JSON 格式字符串,需要对其进行解析、维护并转回新的 JSON 格式字符串?是否需要从服务器获取JSON,并修改它然后将其发送回服务器?或者您的“JSON 文件”实际上只是一个 JavaScript 对象,您只需要使用正常的 JavaScript 逻辑进行操作?