let arr1 = [1, 2, [3 ,4]];
let newArr = arr1.slice();
arr1[2][0] = 'changed';
console.log(newArr); // not a deep clone
let arr2 = [1, 2, [3 ,4]];
let newArrDeepclone = JSON.parse(JSON.stringify(arr2));
arr2[2][0] = 'changed';
console.log(newArrDeepclone); // A deep clone, values unchanged
2
将对象转换为JSON,然后解析它,对我有用,如:
JSON.parse(JSON.stringify(object))
12
使用JSON.parse()解析json字符串,数据成为JavaScript对象 .
JSON.parse(jsonString)
这里,JSON表示处理json数据集 .
例如,想象一下,我们从Web服务器收到了这个文本:
'{ "name":"John", "age":30, "city":"New York"}'
要解析为json对象:
var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}');
这里obj是各自的JSON对象,如下所示 .
{ "name":"John", "age":30, "city":"New York"}
获取使用的值 . 运算符示例:
obj.name // John
obj.age //30
要进行相反的转换,请使用JSON.stringify()将JavaScript对象转换为字符串 .
0
更老的问题,我知道,但是没有人注意到这个解决方案是使用 new Function() ,一个返回数据的匿名函数 .
举个例子:
var oData = 'test1:"This is my object",test2:"This is my object"';
if( typeof oData !== 'object' )
try {
oData = (new Function('return {'+oData+'};'))();
}
catch(e) { oData=false; }
if( typeof oData !== 'object' )
{ alert( 'Error in code' ); }
else {
alert( oData.test1 );
alert( oData.test2 );
}
25 回答
尝试将此方法与此Data对象一起使用 . 例如:
Data='{result:true,count:1}
'当您使用串行端口编程时,此方法确实有助于Nodejs
试试这个 . 这个是用打字稿写的 .
我已成功使用json_sans_eval一段时间了 . 根据它的作者,它比json2.js更安全 .
如果你正在使用jQuery,你也可以这么做
$.getJSON(url, function(data) { });
然后你可以做
data.key1.something
,data.key1.something_else
等事情 .json.parse将变为object .
只是为了好玩,这是使用功能的方式:
您也可以使用
reviver
函数进行过滤 .欲了解更多信息,请阅读JSON.parse
现在不推荐使用jQuery方法 . 请改用此方法:
使用弃用的jQuery功能的原始答案:
如果您正在使用jQuery,请使用:
它正在寻找's exactly what you'(参见jQuery documentation) .
Officially documented :
JSON.parse()
方法解析JSON字符串,构造字符串描述的JavaScript值或对象 . 可以提供可选的reviver
函数,以在返回结果对象之前对其执行转换 .Syntax
Parameters
文本
要解析为JSON的字符串 . 有关JSON语法的说明,请参阅JSON对象 .
reviver(可选)
如果是一个函数,这就规定了在返回之前如何转换最初由解析产生的值 .
Return value
对应于给定JSON文本的Object .
Exceptions
如果要解析的字符串不是有效的JSON,则抛出SyntaxError异常 .
回调传递返回的数据,该数据将是JSON结构定义的JavaScript对象或数组,并使用
$.parseJSON()
方法进行解析 .JSON.parse()将传递给函数的任何JSON String转换为JSON对象 .
为了更好地理解,按F12打开浏览器的Inspect Element并转到控制台以编写以下命令: -
现在运行命令: -
你将得到输出为Object {result:true,count:1} .
为了使用该Object,您可以将其分配给变量let's say obj: -
现在,通过使用obj和dot( . )运算符,您可以访问JSON对象的属性 .
尝试运行该命令
我'm not sure about other ways to do it but here'你是怎么做的Prototype (JSON tutorial) .
使用true调用 evalJSON() 作为参数清理传入的字符串 .
JSON.parse(jsonString)是一种纯JavaScript方法,只要您能保证合理的现代浏览器 .
使用以下link on MSDN中表示的简单代码 .
并反转
使用
parse()
方法的最简单方法:那么你可以得到
Json
元素的值,例如:使用jQuery中描述的jQuery:
Edit: This answer is for IE < 7, for modern browsers check Jonathan's answer above.
编辑:这个答案已过时,Jonathan's answer above(
JSON.parse(jsonString)
)现在是 best answer .JSON.org有许多语言的JSON解析器,包括4个不同的Javascript语言 . 我相信大多数人会考虑json2.js他们的goto实现 .
这似乎是个问题:
通过ajax websocket等接收输入,它总是以String格式 - 但你需要知道它是否是JSON.parsable . Touble是,如果你总是通过JSON.parse运行它,程序可以继续“成功”但你仍然会看到控制台中出现的错误,其中包含可怕的“错误:意外标记'x'” .
使用JSON.parse可能是最好的方法 . 这是一个例子live demo
我发现了一种“更好”的方式:
在CoffeeScript中:
在Javascript中:
如果你的JavaScript在Mootools中,
JSON.parse
将由框架匿名 .将JSON字符串安全地转换为对象的有效syntax应为:
而且
JSON Request
可以引发一个能够直接解析的对象 .你可以在这里告诉它如何变成json raw data:
http://jsfiddle.net/chetabahana/qbx9b5pm/
摘要:
Javascript(浏览器和NodeJS)都有一个内置的
JSON
对象 . 在这个对象上有2个方便的方法来处理JSON
. 它们如下:JSON.parse()
将JSON
作为参数,返回JS对象JSON.stringify()
将JS对象作为参数返回JSON
object其他应用:
除了非常方便地处理
JSON
之外,它们还可以用于其他方式 . 两种JSON
方法的结合使我们可以非常轻松地制作数组或对象的深度克隆 . 例如:将对象转换为JSON,然后解析它,对我有用,如:
使用JSON.parse()解析json字符串,数据成为JavaScript对象 .
这里,JSON表示处理json数据集 .
例如,想象一下,我们从Web服务器收到了这个文本:
要解析为json对象:
这里obj是各自的JSON对象,如下所示 .
获取使用的值 . 运算符示例:
要进行相反的转换,请使用JSON.stringify()将JavaScript对象转换为字符串 .
更老的问题,我知道,但是没有人注意到这个解决方案是使用
new Function()
,一个返回数据的匿名函数 .举个例子:
这样更安全,因为它在函数内部执行,不直接在代码中编译 . 因此,如果其中有一个函数声明,它将不会绑定到默认的窗口对象 .
我用它来简单快速地“编译”DOM元素的配置设置(例如数据属性) .
JSON解析总是很痛苦 . 如果输入不符合预期,则会抛出错误并使您正在执行的操作崩溃 . 您可以使用以下微小功能来安全地解析输入 . 即使输入无效或者已经是对大多数情况更好的对象,它总是会转动对象 .