给定一个JSON数据字符串,如何安全地将该字符串转换为JavaScript对象?
很明显,我可以用这样的方式来做这件事:
var obj = eval("(" + json + ')');
但这让我很容易受到包含其他代码的JSON字符串的攻击,简单地eval似乎非常危险。
给定一个JSON数据字符串,如何安全地将该字符串转换为JavaScript对象?
很明显,我可以用这样的方式来做这件事:
var obj = eval("(" + json + ')');
但这让我很容易受到包含其他代码的JSON字符串的攻击,简单地eval似乎非常危险。
当前回答
$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
});
回调传递返回的数据,该数据将是JSON结构定义的JavaScript对象或数组,并使用$.parseJSON()方法进行解析。
其他回答
使用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对象转换为字符串。
请尝试使用此Data对象的方法。ex:Data=“{result:true,count:1}”
try {
eval('var obj=' + Data);
console.log(obj.count);
}
catch(e) {
console.log(e.message);
}
当您使用串行端口编程时,此方法在Nodejs中非常有用
仅针对不同输入类型的封面解析
使用JSON.Parse()解析数据,数据将成为JavaScript对象。
var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}');
当对从数组派生的JSON使用JSON.parse()时,该方法将返回JavaScript数组,而不是JavaScript对象。
var myArr = JSON.parse(this.responseText);
console.log(myArr[0]);
JSON中不允许使用日期对象。约会时做这样的事
var text = '{ "name":"John", "birth":"1986-12-14", "city":"New York"}';
var obj = JSON.parse(text);
obj.birth = new Date(obj.birth);
JSON中不允许使用函数。如果需要包含函数,请将其写成字符串。
var text = '{ "name":"John", "age":"function () {return 30;}", "city":"New York"}';
var obj = JSON.parse(text);
obj.age = eval("(" + obj.age + ")");
您也可以使用reviver函数进行过滤。
var data = JSON.parse(jsonString, function reviver(key, value) {
//your code here to filter
});
有关详细信息,请阅读JSON.parse。
试试这个。这是用打字机写的。
export function safeJsonParse(str: string) {
try {
return JSON.parse(str);
} catch (e) {
return str;
}
}