Mat*_*ard 1298 javascript json
给定一串JSON数据,您如何安全地将该字符串转换为JavaScript对象?
很显然,你可以通过像......这样的东西不安全地做到这一点.
var obj = eval("(" + json + ')');
Run Code Online (Sandbox Code Playgroud)
...但是这使得我们容易受到包含其他代码的json字符串的影响,这对于简单的eval来说似乎非常危险.
Jon*_*an. 1911
JSON.parse(jsonString) 只要你能保证一个合理的现代浏览器,它就是一种纯粹的JavaScript方法.
Ale*_*x V 873
现在不推荐使用jQuery方法.请改用此方法:
let jsonObject = JSON.parse(jsonString);
Run Code Online (Sandbox Code Playgroud)
使用弃用的jQuery功能的原始答案:
如果您正在使用jQuery,请使用:
jQuery.parseJSON( jsonString );
Run Code Online (Sandbox Code Playgroud)
这正是您正在寻找的(请参阅jQuery 文档).
Ron*_*ite 71
var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);
Run Code Online (Sandbox Code Playgroud)
并反转
var str = JSON.stringify(arr);
Run Code Online (Sandbox Code Playgroud)
Mar*_*iek 21
我不确定其他方法,但这是你在Prototype(JSON教程)中的表现.
new Ajax.Request('/some_url', {
method:'get',
requestHeaders: {Accept: 'application/json'},
onSuccess: function(transport){
var json = transport.responseText.evalJSON(true);
}
});
Run Code Online (Sandbox Code Playgroud)
使用true 调用evalJSON()作为参数清理传入的字符串.
Cod*_*ody 20
这似乎是个问题:
通过ajax websocket等接收输入,它总是以String格式 - 但你需要知道它是否是JSON.parsable.Touble是,如果你总是通过JSON.parse运行它,程序可以继续"成功"但你仍然会看到控制台中出现的错误,其中包含可怕的"错误:意外标记'x'".
var data;
try {
data = JSON.parse(jqxhr.responseText);
} catch (_error) {}
data || (data = {
message: 'Server error, please retry'
});
Run Code Online (Sandbox Code Playgroud)
Pra*_*lad 13
$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
});
Run Code Online (Sandbox Code Playgroud)
回调传递返回的数据,该数据将是JSON结构定义的JavaScript对象或数组,并使用该$.parseJSON()方法进行解析.
les*_*ome 10
只是为了好玩,这是使用功能的方式:
jsonObject = (new Function('return ' + jsonFormatData))()
Run Code Online (Sandbox Code Playgroud)
尝试将此方法与此Data对象一起使用.前:Data='{result:true,count:1}'
try {
eval('var obj=' + Data);
console.log(obj.count);
}
catch(e) {
console.log(e.message);
}
Run Code Online (Sandbox Code Playgroud)
当您使用串行端口编程时,此方法确实有助于Nodejs
小智 7
使用JSON.parse可能是最好的方法.这是一个现场演示示例
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);
Run Code Online (Sandbox Code Playgroud)
使用parse()方法最简单的方法:
var response = '{"result":true,"count":1}';
var JsonObject= JSON.parse(response);
Run Code Online (Sandbox Code Playgroud)
那么你可以得到jQuery.parseJSON()元素的值,例如:
var myResponseResult = JsonObject.result;
var myResponseCount = JsonObject.count;
Run Code Online (Sandbox Code Playgroud)
JSON.parse(jsonString);
Run Code Online (Sandbox Code Playgroud)
我找到了一个“更好”的方法:
在 CoffeeScript 中:
try data = JSON.parse(jqxhr.responseText)
data ||= { message: 'Server error, please retry' }
Run Code Online (Sandbox Code Playgroud)
在 JavaScript 中:
var data;
try {
data = JSON.parse(jqxhr.responseText);
} catch (_error) {}
data || (data = {
message: 'Server error, please retry'
});
Run Code Online (Sandbox Code Playgroud)
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 || {};
}
};
Run Code Online (Sandbox Code Playgroud)
用 解析 JSON 字符串JSON.parse(),数据就变成了 JavaScript 对象:
JSON.parse(jsonString)
Run Code Online (Sandbox Code Playgroud)
这里,JSON代表处理JSON数据集。
想象一下我们从网络服务器收到了这样的文本:
'{ "name":"John", "age":30, "city":"New York"}'
Run Code Online (Sandbox Code Playgroud)
解析为 JSON 对象:
var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}');
Run Code Online (Sandbox Code Playgroud)
下面obj是相应的 JSON 对象,如下所示:
{ "name":"John", "age":30, "city":"New York"}
Run Code Online (Sandbox Code Playgroud)
要获取值,请使用.运算符:
obj.name // John
obj.age //30
Run Code Online (Sandbox Code Playgroud)
将 JavaScript 对象转换为字符串JSON.stringify()。
| 归档时间: |
|
| 查看次数: |
1227840 次 |
| 最近记录: |