gpt4 book ai didi

javascript - 通过指定完整路径获取 JSON 子值时出现问题

转载 作者:行者123 更新时间:2023-12-02 18:14:28 25 4
gpt4 key购买 nike

我有以下 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)时,它甚至没有达到上面的 if 条件,尽管它是有效的响应。

 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 值时可能会出现什么问题吗?

提前致谢。

最佳答案

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; }, []);

关于javascript - 通过指定完整路径获取 JSON 子值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19425231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com