我有以下JSON响应
{
"r": [{
"IsDefault": false,
"re": {
"Name": "Depo"
},
"Valid": "Oct8, 2013",
"Clg":[ {
"Name": "james",
"Rate": 0.05
},
{
"Name": "Jack",
"Rate": 0.55
},
{
"Name": "Mcd",
"Rate": 0.01,
}],
},
{
"IsDefault": false,
"re": {
"Name": "Depo"
},
"Valid": "Oct8, 2013",
"Clg": [{
"Name": "james",
"Rate": 0.05
},
{
"Name": "Jack",
"Rate": 0.55
},
{
"Name": "Mcd",
"Rate": 0.01,
}],
},
{
"IsDefault": false,
"re": {
"Name": "Depo"
},
"Valid": "Oct8, 2013",
"Clg": [{
"Name": "james",
"Rate": 0.05
},
{
"Name": "Jack",
"Rate": 0.55
},
{
"Name": "Mcd",
"Rate": 0.01,
}],
}]
}
我使用$ .getJSON方法加载JSON数据,并通过检查它是否为数组,将其添加到集合中。它按预期正常工作。
var res = loadFromJson(result.r);
loadFromJson = function(input) {
if (_.isArray(input)) {
console.log("Inside Array");
var collection = new CompeCollection();
_.each(input, function(modData) {
collection.add(loadFromJson(modData));
console.log("collection length:"+modData.length);
});
return collection;
}
};
但是当我尝试指定我的JSON响应的确切路径(r.Clg)时,即使它是有效的响应,它甚至不会达到上述条件。
var res = loadFromJson(result.r.Clg);
loadFromJson = function(input) {
if (_.isArray(input)) {
console.log("Inside Array");
var collection = new CompeCollection();
_.each(input, function(modData) {
collection.add(loadFromJson(modData));
console.log("collection length:"+modData.length);
});
return collection;
}
};
当我需要指定实际路径或完整路径时,我该怎么办?
当我传递更具体的json值时,任何人都能告诉我可能出现什么问题吗?
提前致谢。
答案 0 :(得分:2)
result.r.Clg
不存在。 result.r
是一个数组。
如果您只想访问r
数组中的第一个对象,则可以执行此操作:
var res = loadFromJson(result.r);
var clg = res[0].Clg;
或者你可以遍历所有对象,也许捕获一个数组中的所有Clgs:
var clgs = res.map(function (obj) { return obj.Clg; }, []);