无法迭代多个JSON值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法迭代多个JSON值相关的知识,希望对你有一定的参考价值。
我正在尝试使用JSON值来查看ng-repeat中的数据。但我只获得第一个价值。我尝试使用其他方法但没有正确获取值。
我的JSON回复: -
{
"stylesheet": {
"attribute-set": [
{
"attribute": {
"_name": "text-align",
"__prefix": "xsl",
"__text": "center"
},
"_name": "__frontmatter",
"__prefix": "xsl"
},
{
"attribute": [
{
"_name": "space-before",
"__prefix": "xsl",
"__text": "80mm"
},
{
"_name": "space-before.conditionality",
"__prefix": "xsl",
"__text": "retain"
},
{
"_name": "font-size",
"__prefix": "xsl",
"__text": "22pt"
},
{
"_name": "font-weight",
"__prefix": "xsl",
"__text": "bold"
},
{
"_name": "line-height",
"__prefix": "xsl",
"__text": "140%"
}
],
"_name": "__frontmatter__title",
"_use-attribute-sets": "common.title",
"__prefix": "xsl"
}
],
"_xmlns:xsl": "http://www.w3.org/1999/XSL/Transform",
"_xmlns:fo": "http://www.w3.org/1999/XSL/Format",
"_version": "2.0",
"__prefix": "xsl"
}
}
根据上一个问题的建议,我想从"__name"
密钥中获得"attribute"
的所有数据。
我按照我的控制器上的建议尝试了这个: -
console.log($scope.jsonObj);
angular.forEach($scope.jsonObj,function(value,key){
console.log(value["attribute-set"][0]["attribute"]["_name"]);
});
jsonObj是我的JSON对象
在我的控制台中输出是text-align
,这是第一个_name
属性值。
如何从这个JSON中获得_name
值的ng-repeat?
答案
数据结构相当糟糕,具有不同数据类型的相同对象键使事情变得有点困难。但是,这将返回所有_name
字段的列表。
然后将其绑定到您的范围等。
data
.stylesheet['attribute-set']
.map(x => {
if (Array.isArray(x.attribute))
return x.attribute.map(y => y['_name']);
else
return [x.attribute['_name']];
})
.reduce((accu, cur) => accu.concat(...cur), []);
它基本上将_name
字段提取到每个属性集的数组中,然后将其减少为单个数组。
在行动here看到它
另一答案
我假设你想要_name
的所有值。如果您不这样做,请指定您想要的_name
值。首先,您必须使用一个数组中的所有属性重构您的数据:
{
"stylesheet": {
"attribute_set": [
{
"_name": "text-align",
"__prefix": "xsl",
"__text": "center"
},
{
"_name": "__frontmatter",
"__prefix": "xsl"
},
{
"_name": "space-before",
"__prefix": "xsl",
"__text": "80mm"
},
{
"_name": "space-before.conditionality",
"__prefix": "xsl",
"__text": "retain"
},
{
"_name": "font-size",
"__prefix": "xsl",
"__text": "22pt"
},
{
"_name": "font-weight",
"__prefix": "xsl",
"__text": "bold"
},
{
"_name": "line-height",
"__prefix": "xsl",
"__text": "140%"
},
{
"_name": "__frontmatter__title",
"_use-attribute-sets": "common.title",
"__prefix": "xsl"
}
],
"_xmlns:xsl": "http://www.w3.org/1999/XSL/Transform",
"_xmlns:fo": "http://www.w3.org/1999/XSL/Format",
"_version": "2.0",
"__prefix": "xsl"
}
}
然后运行:
angular.forEach($scope.jsonObj.stylesheet.attribute_set, function(value, key) {
console.log(value._name);
});
以上是关于无法迭代多个JSON值的主要内容,如果未能解决你的问题,请参考以下文章