给定一个JSON数据字符串,如何安全地将该字符串转换为JavaScript对象?
很明显,我可以用这样的方式来做这件事:
var obj = eval("(" + json + ')');
但这让我很容易受到包含其他代码的JSON字符串的攻击,简单地eval似乎非常危险。
给定一个JSON数据字符串,如何安全地将该字符串转换为JavaScript对象?
很明显,我可以用这样的方式来做这件事:
var obj = eval("(" + json + ')');
但这让我很容易受到包含其他代码的JSON字符串的攻击,简单地eval似乎非常危险。
当前回答
JSON.parse()将传递到函数中的任何JSON字符串转换为JSON对象。
要更好地理解它,请按F12在浏览器中打开“Inspect Element”,然后转到控制台编写以下命令:
var response = '{"result":true,"count":1}'; //sample json object(string form)
JSON.parse(response); //converts passed string to JSON Object.
现在运行命令:
console.log(JSON.parse(response));
您将得到一个Object{result:true,count:1}的输出。
为了使用该Object,可以将其分配给变量,可能是obj:
var obj = JSON.parse(response);
通过使用obj和点(.)操作符,您可以访问JSON对象的财产。
尝试运行以下命令:
console.log(obj.result);
其他回答
使用parse()方法的最简单方法:
var response = '{"result":true,"count":1}';
var JsonObject= JSON.parse(response);
然后可以获得JSON元素的值,例如:
var myResponseResult = JsonObject.result;
var myResponseCount = JsonObject.count;
使用jQuery.parseJSON()文档中描述的jQuery:
JSON.parse(jsonString);
我知道,老问题是,但是没有人注意到这个解决方案,因为它使用了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 );
}
这稍微安全一点,因为它在函数内部执行,而不直接在代码中编译。因此,如果其中有函数声明,它将不会绑定到默认的窗口对象。
我使用它来简单快速地“编译”DOM元素(例如数据属性)的配置设置。
请尝试使用此Data对象的方法。ex:Data=“{result:true,count:1}”
try {
eval('var obj=' + Data);
console.log(obj.count);
}
catch(e) {
console.log(e.message);
}
当您使用串行端口编程时,此方法在Nodejs中非常有用
将对象转换为JSON,然后解析它,对我来说很有用,比如:
JSON.parse(JSON.stringify(object))
另一种选择
const json=“{”水果“:”菠萝“,”手指“:10}”让j0s,j1s,j2s,j3sconsole.log(`{“${j0s=“fruit”}”:“${j1s=“菠萝”}”,“${j2s=“fingers”}”:${j3s=“10”}}`)