javascript - JS-JSON解析一有很多

标签 javascript jquery json

我找不到任何类似的问题,所以如果这与另一个问题类似,请原谅。我有一个具有以下结构的 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/

相关文章:

javascript - 获取表中标题区域下方的滚动条。注意 : Table wont have thead and tbody

javascript - 南?为什么浏览器不会将其读取为数字?

javascript - 什么是 John Resig 提到的动态代码评估

c# - JSON.NET反序列化自定义日期格式

javascript - 使用 JavaScript 拖动和移动 HTML 元素

javascript - Pentaho Kettle 修改的 Java 脚本 setVariable

javascript - 使用其值选择动态复选框

javascript - 如何使用 java 脚本或 JQuery 根据在一个文本框中输入的时间在其他文本框中填充更新时间

json - Logback 附加程序将消息作为 HTTP 消息发布

javascript - 无法通过 ng-model 在 html 上显示数组 json 值