Javascript 从JSON文件读取聚合JS
我试图从JS中Polymer中的JSON文件中读取一个子数组,并返回要在Javascript 从JSON文件读取聚合JS,javascript,arrays,json,polymer,Javascript,Arrays,Json,Polymer,我试图从JS中Polymer中的JSON文件中读取一个子数组,并返回要在dom repeat中使用的子数组。但是,它告诉我子数组是未定义的。我尝试用各种方式重新构造JSON文件,但没有成功。我想我在某个地方没有使用正确的语法 现在,JSON如下所示: { "url": "dn8", "volpage": "DN iii 1", "languages": [{ "pt": { "authors"
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"]
}
}]
}
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 : "";
}
});
我试图得到一个名为languageData
的子数组,它只保存输入语言的特定数据。输入具有inputLanguage
的正确值,例如“pt”。我的JS看起来像这样:
{
"url": "dn8",
"volpage": "DN iii 1",
"languages": [{
"pt": {
"authors": ["Laera"],
"titlelan": "Title in Portuguese"
},
"fr": {
"authors": ["Moi"],
"titlelan": "Title in French"
},
"es": {
"authors": ["Jesus"]
}
}]
}
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的
语言
属性不是对象
,而是数组
您的“聚合代码”运行良好,问题是您试图获取languageData
,就好像它是一个数组:
var lanarray = inputData.languages[inputLanguage];
实际上,languages
包含一个对象数组,您无法通过这种方式找到lang对象
一个可能的解决办法是:
var lanarray = inputData.languages[0][inputLanguage];
你能在网上设置这个问题的例子吗?这样会更容易帮助你解决问题吗?下面是操作方法:可以尝试:
var lanarray=inputData.0.languages[inputLanguage]代码>谢谢你的解释。这真的很有帮助,我现在可以看出我错在哪里了。