admin管理员组文章数量:1323714
In this post I learned how to encode an object on the server side, and now I would like to decode it on the client side.
On the client side I do
$.ajax({
type: "GET",
url: "/cgi-bin/ajax_sort.pl",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: { "column" : this.id },
error: function(XMLHttpRequest, textStatus, errorThrown) {
showError('responseText: ' + XMLHttpRequest.responseText);
showError('textStatus: ' + textStatus);
showError('errorThrown: ' + errorThrown);
},
success: function(result){
if (result.error) {
showError(result.error);
} else {
var obj = jQuery.parseJSON(result);
}
}
});
Question
Does obj
now contain the decoded JSON data?
If so, the object looks like this one the server side (output from Perl's Data::Dumper
)
$VAR1 = {
'127' => {
'owners' => [
'm'
],
'users' => [
'hh',
'do'
],
'date_end' => '24/05-2011',
'title' => 'dfg',
'date_begin' => '24/05-2011',
'members_groups' => [],
'type' => 'individuel'
},
'276' => {
...
Question
Is obj
indeed contains the decoded JSON, how do I iterate over the object?
In this post I learned how to encode an object on the server side, and now I would like to decode it on the client side.
On the client side I do
$.ajax({
type: "GET",
url: "/cgi-bin/ajax_sort.pl",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: { "column" : this.id },
error: function(XMLHttpRequest, textStatus, errorThrown) {
showError('responseText: ' + XMLHttpRequest.responseText);
showError('textStatus: ' + textStatus);
showError('errorThrown: ' + errorThrown);
},
success: function(result){
if (result.error) {
showError(result.error);
} else {
var obj = jQuery.parseJSON(result);
}
}
});
Question
Does obj
now contain the decoded JSON data?
If so, the object looks like this one the server side (output from Perl's Data::Dumper
)
$VAR1 = {
'127' => {
'owners' => [
'm'
],
'users' => [
'hh',
'do'
],
'date_end' => '24/05-2011',
'title' => 'dfg',
'date_begin' => '24/05-2011',
'members_groups' => [],
'type' => 'individuel'
},
'276' => {
...
Question
Is obj
indeed contains the decoded JSON, how do I iterate over the object?
4 Answers
Reset to default 5Because you specified the dataType: 'json'
, result
should already contain the Javascript object unserialized from the HTTP response. $.parseJSON
should be unnecessary.
You can loop through it with $.each
:
success: function(result){
if (result.error) {
showError(result.error);
} else {
$.each(result, function(key, value) {
alert(value.title).
});
}
}
result
is already a JSON object - parsed by jQuery since you've specified dataType: "json"
- so you shouldn't be parsing it.
To go over the data, you could do this:
for(key in result){
var curr = result[key];
//iterate over owners
for(var i = 0; i < curr.owners.length; i++){
alert(curr.owners[i]);
}
//iterate over users
for(var i = 0; i < curr.users.length; i++){
alert(curr.users[i]);
}
alert(curr.data_end);
alert(curr.title);
//and so on...
}
Update
I keep forgetting about $.each()
as shown in lonsomeday's answer - you might want to go with that instead.
You can iterate over obj's members using for...in
.
for(var key in obj) {
var value = obj[key];
alert(key + "=" + value);
}
Note: There should be little reason for you to want to iterate over the members of a JSON object. JSON is intended as a serialization format where both sides (client and server) know its structure. If you can help what data is transmitted, obj should be an array on its outmost scope.
You have to declare the data type of your AJAX request as JSON. jQuery will automatically "decode" this and create an object out of it.
You can immediately access the data via alert( result[127] );
本文标签: javascriptHow to decode JSON object and iterate over itStack Overflow
版权声明:本文标题:javascript - How to decode JSON object and iterate over it? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742127100a2421990.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论