描述和目标: 实质上,数据每2分钟不断生成JSON数据。我需要做的是从提供的JSON数据中检索信息。数据会不断变化。一旦解析了信息,就需要将其捕获到可用于其他功能的变量中。
我所困扰的是试图弄清楚如何使用循环创建一个函数,该循环将所有数据重新分配给以后可以在函数中使用的存储变量。
示例信息:
var json = {"data":
{"shop":[
{
"carID":"7",
"Garage":"7",
"Mechanic":"Michael Jamison",
"notificationsType":"repair",
"notificationsDesc":"Blown Head gasket and two rail mounts",
"notificationsDate":07/22/2011,
"notificationsTime":"00:02:18"
},
{
"CarID":"8",
"Garage":"7",
"Mechanic":"Tom Bennett",
"notificationsType":"event",
"notifications":"blown engine, 2 tires, and safety inspection",
"notificationsDate":"16 April 2008",
"notificationsTime":"08:26:24"
}
]
}};
function GetInformationToReassign(){
var i;
for(i=0; i<json.data.shop.length; i++)
{
//Then the data is looped, stored into multi-dimensional arrays that can be indexed.
}
}
所以最终结果必须是这样的:
shop[0]={7,7,"Michael Jamison",repair,"Blown Head gasket and two rail mounts", 07/22/2011,00:02:18 }
店[1] = {}
答案 0 :(得分:1)
您可以使用以下代码
循环访问JSON字符串 var JSONstring=[{"key1":"value1","key2":"value2"},{"key3":"value3"}];
for(var i=0;i<JSONstring.length;i++){
var obj = JSONstring[i];
for(var key in obj){
var attrName = key;
var attrValue = obj[key];
//based on the result create as you need
}
}
希望这会有所帮助......
答案 1 :(得分:0)
嗯,您的输出示例是不可能的。你有什么东西,但你正在使用对象语法。
如果你真的希望列表格式而不是键值对的那些项是有意义的话:
shop[0]=[7,7,"Michael Jamison",repair,"Blown Head gasket and two rail mounts", 07/22/2011,00:02:18]
对于循环对象中的属性,您可以使用以下内容:
var properties = Array();
for (var propertyName in theObject) {
// Check if it’s NOT a function
if (!(theObject[propertyName] instanceof Function)) {
properties.push(propertyName);
}
}
老实说,我不太确定你为什么要把它换成不同的格式。 json数据已经和它一样好了,你可以购买[0] [“carID”]来获取该字段中的数据。
答案 2 :(得分:0)
听起来我想要在JSON对象的“shop”属性中提取数据,以便您可以轻松地引用所有商店的项目。这是一个例子:
var json =
{
"data":
{"shop":
[
{"itemName":"car", "price":30000},
{"itemName":"wheel", "price":500}
]
}
},
inventory = [];
// Map the shop's inventory to our inventory array.
for (var i = 0, j = json.data.shop.length; i < j; i += 1) {
inventory[i] = json.data.shop[i];
}
// Example of using our inventory array
console.log( inventory[0].itemName + " has a price of $" + inventory[0].price);