asi*_*s64 29 javascript ajax json object
例如,我有一个.JSON文件具有以下内容:
[{"honda": "accord", "color": "red"},{"ford": "focus", "color": "black"}]
Run Code Online (Sandbox Code Playgroud)
什么是将另一个对象推{"nissan": "sentra", "color": "green"}入此.json数组以使.json文件看起来像的javascript代码
[{"honda": "accord", "color": "red"},{"ford": "focus", "color": "black"},{"nissan": "sentra", "color": "green"}]
Run Code Online (Sandbox Code Playgroud)
我问的原因是我在网上找到了很多关于如何使用AJAX从.json文件中提取数据但是没有使用AJAX将新数据写入.json文件以使用其他数据更新.json文件的信息.
任何帮助,将不胜感激!谢谢.
小智 23
您必须清楚"JSON"的含义.
有些人错误地使用术语JSON来引用一个普通的旧JavaScript对象,例如[{a: 1}].这个恰好是一个数组.如果你想向数组中添加一个新元素,就像push它一样
var arr = [{a: 1}];
arr.push({b: 2});
< [{a: 1}, {b: 2}]
Run Code Online (Sandbox Code Playgroud)
单词JSON也可用于引用以JSON格式编码的字符串:
var json = '[{"a": 1}]';
Run Code Online (Sandbox Code Playgroud)
注意(单个)引号表示这是一个字符串.如果你有从某个地方获得的这样一个字符串,你需要先将它解析成一个JavaScript对象,使用JSON.parse:
var obj = JSON.parse(json);
Run Code Online (Sandbox Code Playgroud)
现在,您可以以任何方式操纵对象,包括push如上所示.如果您想将其放回JSON字符串中,那么您使用JSON.stringify:
var new_json = JSON.stringify(obj.push({b: 2}));
'[{"a": 1}, {"b": 1}]'
Run Code Online (Sandbox Code Playgroud)
JSON还用作格式化数据的常用方法,用于与服务器之间传输数据,可以保存(保留)数据.这就是ajax的用武之地.Ajax用于从服务器获取数据(通常是JSON格式),和/或以JSON格式发送数据到服务器.如果您收到来自JSON格式的ajax请求的响应,则可能需要JSON.parse如上所述.然后,您可以操作对象,将其重新放回JSON格式JSON.stringify,并使用另一个ajax调用将数据发送到服务器进行存储或其他操作.
您使用术语"JSON文件".通常,单词"file"用于指代某些设备上的物理文件(不是您在代码中处理的字符串,或JavaScript对象).浏览器无法访问计算机上的物理文件.它无法读取或写入它们.实际上,浏览器甚至没有"文件"的概念.因此,您不能只在本地计算机上读取或写入某些JSON文件.如果要向服务器发送JSON和从服务器发送JSON,当然,服务器可能将JSON存储为文件,但服务器更可能基于某些ajax请求构建JSON,基于从数据库检索的数据,或在某些ajax请求中解码JSON,然后将相关数据存储回其数据库.
你真的有一个"JSON文件",如果有的话,它存在于哪里,你从哪里得到它?你有一个JSON格式的字符串,你需要解析,mainpulate,并转回一个新的JSON格式字符串?您是否需要从服务器获取JSON并修改它然后将其发送回服务器?或者您的"JSON文件"实际上只是一个JavaScript对象,您只需要使用普通的JavaScript逻辑进行操作?
Ano*_*DCX 13
可以使用JSON.stringify将JSON编写到本地存储中以序列化JS对象.您不能仅使用JS写入JSON文件.只有cookie或本地存储
var obj = {"nissan": "sentra", "color": "green"};
localStorage.setItem('myStorage', JSON.stringify(obj));
Run Code Online (Sandbox Code Playgroud)
并在以后检索对象
var obj = JSON.parse(localStorage.getItem('myStorage'));
Run Code Online (Sandbox Code Playgroud)