题
鉴于一串象的数据,如何可以放心地把那串成一个JavaScript对象?
显然你可以做这种不安全的东西一样...
var obj = eval("(" + json + ')');
...但是这给我们留下容易受到id string含有其他代码,它似乎非常危险的简单eval。
解决方案
JSON.parse(jsonString)
是一个纯粹的JavaScript办法,所以,只要你能保证一个合理的现代化浏览器。
其他提示
延的方法现在已经过时了。使用这种方法来代替:
let jsonObject = JSON.parse(jsonString);
原来的答复使用弃jQuery的功能:
如果你使用jQuery只是使用:
jQuery.parseJSON( jsonString );
这正是你在找什么(见s 文档).
使用简单的代码表示的下面 链接MSDN.
var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);
和反
var str = JSON.stringify(arr);
我不知道其他的方式来做到这一点,但这里就是你怎么做 原型(JSON教程).
new Ajax.Request('/some_url', {
method:'get',
requestHeaders: {Accept: 'application/json'},
onSuccess: function(transport){
var json = transport.responseText.evalJSON(true);
}
});
叫 evalJSON() 与真正的参数清理传入的串。
这似乎是问题:
输入接收、通过阿贾克斯websocket等,它总是会在String format-但你需要知道如果这是手机中。parsable.Touble是,如果你总是运行它通过手机中。分析,该程序可以继续'成功'但是你还是会看到一个错误扔在控制台有可怕的"错误:意想不到的令牌'x'".
var data;
try {
data = JSON.parse(jqxhr.responseText);
} catch (_error) {}
data || (data = {
message: 'Server error, please retry'
});
如果你使用 jQuery, 你也可以做 $.getJSON(url, function(data) { });
然后你可以做的事情一样 data.key1.something
, data.key1.something_else
, 等等。
$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
});
回调是通过返回的数据,这将是一个JavaScript对象或列为定义的id结构和分析使用 $.parseJSON()
法。
只是为了好玩,这里的方式使用功能:
jsonObject = (new Function('return ' + jsonFormatData))()
尝试使用的方法与这些数据对象。例如:Data='{result:true,count:1}
'
try {
eval('var obj=' + Data);
console.log(obj.count);
}
catch(e) {
console.log(e.message);
}
这种方法确实有助于在node.js工作时与串口编程
使用手机中。分析可能是最好的方式。这里有一个例子 现场演示
var jsonRes = '{ "students" : [' +
'{ "firstName":"Michel" , "lastName":"John" ,"age":18},' +
'{ "firstName":"Richard" , "lastName":"Joe","age":20 },' +
'{ "firstName":"James" , "lastName":"Henry","age":15 } ]}';
var studentObject = JSON.parse(jsonRes);
我发现了一个"更好"的方式:
在抑:
try data = JSON.parse(jqxhr.responseText)
data ||= { message: 'Server error, please retry' }
在Javascript:
var data;
try {
data = JSON.parse(jqxhr.responseText);
} catch (_error) {}
data || (data = {
message: 'Server error, please retry'
});
JSON.parse(jsonString);
手机中。分析将会改变为对象。
JSON分析总是痛苦的屁股。如果输入不是因为预计这将引发错误和崩溃你在做什么。你可以用下面的小小功能的安全分析你的输入。它总是变成一个对象即使输入不正确,或者已经是一个目的是更好地为大多数情况下。
JSON.safeParse = function (input, def) {
// Convert null to empty object
if (!input) {
return def || {};
} else if (Object.prototype.toString.call(input) === '[object Object]') {
return input;
}
try {
return JSON.parse(input);
} catch (e) {
return def || {};
}
};
变换的目的,以式,然后分析了它,为我工作,如:
JSON.parse(JSON.stringify(object))
如果我们有一串这样的:"{\"状态\":1,\"令牌\":\"65b4352b2dfc4957a09add0ce5714059\"}" 然后我们可以简单地使用手机中。分析两次将这一串JSON对象:
var sampleString = "{\"status\":1,\"token\":\"65b4352b2dfc4957a09add0ce5714059\"}"
var jsonString= JSON.parse(sampleString)
var jsonObject= JSON.parse(jsonString)
简我们可以提取价值从JSON目的使用:
// instead of last JSON.parse:
var { status, token } = JSON.parse(jsonString);
结果将是:
status = 1 and token = 65b4352b2dfc4957a09add0ce5714059
手机中。分析()将任何JSON串通过进入功能,JSON对象。
为了更好地理解按F12开放检查件的浏览器和去控制台写的下列命令:-
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));
你会得到输出作为目标{结果:真的,数:1}.
为了使用,目的,你可以把它分配给可变我们说obj:-
var obj = JSON.parse(response);
现在通过使用obj和点(.) 操作人员可以访问的性启的对象。
试运行命令
console.log(obj.result);
正式记录:
的 JSON.parse()
方法分析一个JSON串,构建JavaScript值或目标的描述通过。一个可选的 reviver
功能可以提供给执行一个转变将所得目前返回。
语法
JSON.parse(text[, reviver])
参数
文本
串分析允.见id对象说明,象的语法。
齐磊(可选)
如果一个函数,这种规定值如何最初产生的分析是改变之前,正在返回。
回值
对应该给予JSON文本。
例外情况
引发一语法错误的例外,如果串的分析不是有效的手机中。
你也可以使用 reviver
功能的过滤器。
var data = JSON.parse(jsonString, function reviver(key, value) {
//your code here to filter
});
更多信息,读 手机中。分析
老年问题,我知道,但是没有人注意到这一解决方案通过使用 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元素(例如数据属性)的简单和快速。
分析id string结果的方式.分析(),并将数据变成一个JavaScript对象。
JSON.parse(jsonString)
在这里,JSON表示要处理json数据集。
例, 想象一下我们接到这个案文从一个网络服务器:
'{ "name":"John", "age":30, "city":"New York"}'
分析有关图书目的:
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
转移相反,转换JavaScript对象成一串结果的方式.转换成字符串().
摘要:
Javascript(浏览器和node.js)有一个建立在 JSON
对象。在这个对象是2方便的方法处理 JSON
.它们是:
JSON.parse()
需要JSON
作为参数,返回JS对象JSON.stringify()
需要JS对象参数返回JSON
对象
其他应用程序:
此外,为便利处理 JSON
他们可以被用于其他装置。这两者的结合 JSON
方法能使我们很容易深入的克隆的阵或对象。例如:
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
试试这个。这一个是写稿.
export function safeJsonParse(str: string) {
try {
return JSON.parse(str);
} catch (e) {
return str;
}
}