javascript - Polymer JS 从 JSON 文件读取

标签 javascript arrays json polymer

我正在尝试从 JS 中 Polymer 中的 JSON 文件读取子数组,并返回要在 dom-repeat 中使用的子数组。但是,它告诉我子数组未定义。我尝试以各种方式重新构建 JSON 文件,但没有成功。我认为我在某处没有使用正确的语法。

现在 JSON 看起来像这样:

{
        "url": "dn8",
        "volpage": "DN iii 1",
        "languages": [{
            "pt": {
                "authors": ["Laera"],
                "titlelan": "Title in Portuguese"
            },
            "fr": {
                "authors": ["Moi"],
                "titlelan": "Title in French"
            },
            "es": {
                "authors": ["Jesus"]
            }
        }]
}

我正在尝试获取一个名为languageData 的子数组,它仅保存输入语言的特定数据。输入具有正确的 inputLanguage 值,例如“pt”。我的 JS 看起来像这样:

    Polymer({
      is: 'test-data',
      properties: {

        inputUrl: String,
        inputLanguage: String,
        inputData: {
              type: Array,
              notify: true,
              value: function(){return []}
        },

        languageData: {
          type: Array,
          computed: '_computeLanguage(inputData,inputLanguage)'
        }
      },
      _computeLanguage: function(inputData,inputLanguage) {
        var lanarray = inputData.languages[inputLanguage];
        return lanarray ? lanarray : "";
      }

    });

非常感谢任何帮助!

最佳答案

如您所见,JSON 的 languages 属性不是 Object 而是 Array

您的“polymer 代码”运行良好,问题是您试图获取languageData,就好像它是一个数组一样:

var lanarray = inputData.languages[inputLanguage];

实际上,languages包含一个对象数组,你无法通过这种方式找到你的lang对象。

可能的解决方案是:

var lanarray = inputData.languages[0][inputLanguage];

关于javascript - Polymer JS 从 JSON 文件读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43488557/

相关文章:

javascript - 如何让 DIV 占据容器 div 的其余高度?

javascript - 按下 Tab 键时可编辑表格内容

javascript - 主干 View 无法使用获取的 json

arrays - 快速检索第一个字典值

sql - 如何使用 `jsonb_build_object` 创建带有聚合函数和动态键值的嵌套 JSON 返回

javascript - 在 Vue 上将对象作为 Prop 传递

arrays - Kotlin 中的多维对象数组

javascript - 将 JSON 对象列表从 javascript 发送到 MVC 操作

javascript - 显示到页面后如何编辑和删除json

c - 从 scanf() 读取源字符串后,字符串未被复制