我找不到任何类似的问题,所以如果这与另一个问题类似,请原谅。我有一个具有以下结构的 JSON:
{
"data":[
{
"autores": { "autor": "Sérgio Pacheco Neves" }
},
{
"autores": {
"autor": [
"Julia Barbosa Curto",
"Roberta Mary Vidotti",
"Richard J. Blakely",
"Reinhardt Adolfo"
]
}
}
]
}
我想将每个“作者”作为一个单独的记录并将其插入一个数组中。正如您所看到的,有时它有 1 个值,有时有一个包含 n 个值的数组。这必须使用 javascript (jquery) 来实现。我试过这个:
var autores = [];
$.each(contentData, function(i, v) {
$.each(this.autores, function(j, w) {
autores.push(w);
});
});
console.log(autores);
但是我没有迭代 autores 中的每个 autor,而是得到了这个:
0: "Sérgio Pacheco Neves"
1: Array[4]
0: "Julia Barbosa Curto"
1: "Roberta Mary Vidotti"
2: "Richard J. Blakely"
3: "Reinhardt Adolfo"
我希望实现这样的目标:
0: "Sérgio Pacheco Neves"
1: "Julia Barbosa Curto"
2: "Roberta Mary Vidotti"
3: "Richard J. Blakely"
4: "Reinhardt Adolfo"
我该怎么做?
最佳答案
在不更改现有结构的情况下,您可以通过检查您正在访问的条目是否是数组来实现这一点,如果是,则将其所有整体推送到 autores
上:
var autores = [];
$.each(contentData, function(i, v) {
$.each(this.autores, function(j, w) {
if (typeof w === "object") { // That's what it says for arrays
autores.push.apply(autores, w); // Push all of w's entries
} else {
autores.push(w);
}
});
});
console.log(autores);
但正如我在评论中所说,我会修改结构,以便它始终为autor
返回一个数组,即使它只有一个条目。
关于javascript - JS-JSON解析一有很多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30357738/