[英]Iterate over String of JSON Format
I am passing MongoDB Query Result in String Format to JSP Page using Ajax. 我正在使用Ajax将字符串格式的MongoDB查询结果传递给JSP页面。 I am retrieving data successfully but don't know how to Iterate over that data. 我正在成功检索数据,但不知道如何遍历该数据。
Note : JSON Structure is of Dynamic Schema given below 注意: JSON结构具有以下动态架构
Query Result in String Format 字符串格式的查询结果
[
{
"_id":"...",
"user":"John Doe",
"hobbies":["1","2","3"],
"address":{
"city":"...",
"state":"...",
"country":"..."
},
"cell":97265xxxxx
},
{
"_id":"...",
"user":"John Doe",
"hobbies":["1","2","3"],
"cell":97265xxxxx
}
...
]
First I am converting the JSON String into JavaScript Object using jQuery parseJSON() & then I am trying to loop over the data but it is showing me undefined. 首先,我使用jQuery parseJSON()将JSON字符串转换为JavaScript对象,然后尝试遍历数据,但显示的是未定义的内容。
Here is the Code 这是代码
<button>Click Me</button><br/>
<p id="p0"></p>
<p id="p1"></p>
<p id="p2"></p>
<p id="p3"></p>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").on("click",function(){
$.ajax({
url:'QuizDemoServlet',
type:'post',
success:function(data) {
//JSON String is Fetched Successfully
$("#p0").html(data);
var jso = $.parseJSON(data);
alert("JSO " +jso.length);
for(var iterate=0; iterate<jso.length; iterate++){
$("#p1").append(iterate["user"]+"<br>");
$("#p2").append(iterate["hobbies"]+"<br>");
$("#p3").append(iterate["cell"]+"<br>");
}
},
error:function(msg){
alert("Error");
console.log(msg);
}
});
});
});
</script>
Firstly, I assume your JSON is correct. 首先,我假设您的JSON是正确的。 If so, make sure its in this form: 如果是这样,请确保其格式如下:
[
{
"_id":"...",
"user":"John Doe",
"hobbies":["1","2","3"],
"address":{
"city":"...",
"state":"...",
"country":"..."
},
"cell":"97265xxxxx"
},
{
"_id":"...",
"user":"John Doe",
"hobbies":["1","2","3"],
"cell":"97265xxxxx"
},
......
{
.....
}
]
Make sure to validate using validators such as http://jsonlint.com/ 确保使用诸如http://jsonlint.com/的验证器进行验证
Your JSON is an array of objects
. 您的JSON是一个array of objects
。 So, its as good as iterating over an array in JavaScript. 因此,它与遍历JavaScript中的数组一样好。
Lets assume variable data
holds your JSON. 假设变量data
保存您的JSON。
var data = JSON.parse(YOUR_JSON_STRING); // Your JSON is a `string`. We need to `parse` it to convert into JavaScript object, so that we can iterate over it.
In that case, you can do something like this: 在这种情况下,您可以执行以下操作:
for(var obj=0;obj<data.length;obj++){
// You get each object here.
//obj['_id']
// obj['user']
// But since schema is dynamic, make sure the key exists before you access it
if(data[obj].hobbies!= undefined){
//Iterate over hobbies.
}
if(data[obj].address!=undefined){
var city = data[obj].address.city;
var state = data[obj].address.state;
var country= data[obj].address.country;
}
....and so on
}
for(var iterate=0; iterate<jso.length; iterate++){
$("#p1").append(jso[iterate].user+"<br>");
$("#p2").append(jso[iterate].hobbies+"<br>");
$("#p3").append(jso[iterate].cell+"<br>");
}
Works now 现在工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.