Javascript 如何将一个JSON行重新映射到层次JSON?
我现在遇到了一个让我心痛的难题, 我想将[01]JSON转换为[02] [01]JSON:Javascript 如何将一个JSON行重新映射到层次JSON?,javascript,json,Javascript,Json,我现在遇到了一个让我心痛的难题, 我想将[01]JSON转换为[02] [01]JSON: {locations: [ { country: "Australia", area: "NSW", city: "Gordon" }, { country: "Australia", area: "NSW", city: "Chatswood" } ]}; [02]JSON:
{locations: [
{
country: "Australia",
area: "NSW",
city: "Gordon"
},
{
country: "Australia",
area: "NSW",
city: "Chatswood"
}
]};
[02]JSON:
{countries: [
{
name: "Australia",
areas: [
{
name: "NSW",
cities: [
{
name: "Gordon"
},
{
name: "Chatswood"
}
]
}
]
}
]}
因为您将要进行一系列查找,所以我建议使用对象集合,而不是数组的最终结构。然后,您可以将其转换为最终结构,或者修改代码以按原样使用它
var countries = {};
for (var i=0, loc; loc = locations[i]; i++) {
if (!countries[loc.country]) countries[loc.country] = {};
if (!countries[loc.country][loc.area]) countries[loc.country][loc.area] = [];
countries[loc.country][loc.area].push(loc.city);
}
alert(JSON.stringify(countries));
我还没有遇到一个库可以帮助您按照所需的方式更改数据结构。您可能需要手工操作(GSON可能会有很大帮助)。这与解析无关,而是将一个数据结构重新映射到另一个数据结构。@JosephDreamer我尝试编写逻辑代码来回答这个问题,但我奇怪地解决了这个问题。我所编写的代码不能用于需求。所以我想要更简洁优雅的方式。json中没有任何东西可以与xml中的样式表(xslt)相媲美。您有没有考虑过收集函数,特别是在?哇!中的
groupBy
!,我不知道为什么我没有想到这个主意。谢谢你,詹姆斯。我现在很高兴解决了这个问题,我想,今天我可以回家了