我需要帮助将JSON数据转换为javascript中的3级多维数组
我需要帮助将JSON数据转换为javascript中的3级多维数组。我以JSON格式检索的代码如下所示:我需要帮助将JSON数据转换为javascript中的3级多维数组,javascript,php,arrays,json,multidimensional-array,Javascript,Php,Arrays,Json,Multidimensional Array,我需要帮助将JSON数据转换为javascript中的3级多维数组。我以JSON格式检索的代码如下所示: [ {'City':'Philadelphia','State':'Pennsylvania','Country':'United States'}, {'City':'Pittsburgh','State':'Pennsylvania','Country':'United States'}, {'City':'Harrisburg','State':'Pennsylvania',
[
{'City':'Philadelphia','State':'Pennsylvania','Country':'United States'},
{'City':'Pittsburgh','State':'Pennsylvania','Country':'United States'},
{'City':'Harrisburg','State':'Pennsylvania', 'Country':'United States'},
{'City':'Sacramento', 'State':'California', 'Country':'United States'},
{'City':'Fremont', 'State':'California', 'Country':'United States'},
{'City':'Los Angeles', 'State':'California','Country': 'United States'},
{'City':'Sydney', 'State':'New South Wales', 'Country':'Australia'},
{'City':'Melbourne', 'State':'Victoria', 'Country':'Australia'}
]
但我需要这种格式:
$scope.countries = {
'United States':
{
'Pennsylvania': ['Philadelphia', 'Pittsburgh', 'Harrisburg'],
'California': ['Sacramento', 'Fremont', 'Los Angeles']
},
'Australia':
{
'New South Wales': ['Sydney'],
'Victoria': ['Melbourne']
}
};
我强烈建议您改变数据的传输方式。也就是说,如果您打算键入数组括号而不是对象括号,那么我为您的问题提供了一个JSBin解决方案
函数dataParse(){
风险值数据=[
[“费城”、“宾夕法尼亚”、“美国”],
[“匹兹堡”、“宾夕法尼亚”、“美国”],
[“哈里斯堡”、“宾夕法尼亚”、“美国”],
[“萨克拉门托”、“加利福尼亚”、“美国”],
[“弗里蒙特”、“加利福尼亚”、“美国”],
[“洛杉矶”、“加利福尼亚”、“美国”],
[“悉尼”、“新南威尔士”、“澳大利亚”],
[‘墨尔本’、‘维多利亚’、‘澳大利亚’]
];
var newObject={};
对于(变量i=0;i
所以它看起来像这样,可以为您提供所需的JSON
普朗克:
编辑
已编辑以使用新格式
var original = [
{'City':'Philadelphia','State':'Pennsylvania','Country':'United States'},
{'City':'Pittsburgh','State':'Pennsylvania','Country':'United States'},
{'City':'Harrisburg','State':'Pennsylvania', 'Country':'United States'},
{'City':'Sacramento', 'State':'California', 'Country':'United States'},
{'City':'Fremont', 'State':'California', 'Country':'United States'},
{'City':'Los Angeles', 'State':'California','Country': 'United States'},
{'City':'Sydney', 'State':'New South Wales', 'Country':'Australia'},
{'City':'Melbourne', 'State':'Victoria', 'Country':'Australia'}
]
var json = {};
for(var i in original){
var country = original[i].Country;
var state = original[i].State;
var city = original[i].City;
var obj = {};
if(!json.hasOwnProperty(country)){
obj[state] = [city];
json[country] = obj;
}
else if(json[country].hasOwnProperty(state)){
json[country][state].push(city);
}
else if(!json[country].hasOwnProperty(state)){
json[country][state] = [city];
}
}
您从哪里获得原始JSON字符串。你是以某种方式生成的还是从其他地方得到的?是的,这是一些看起来很奇怪的JSON数据。实际上,它甚至是无效的,你不能有一个没有键值的对象。Jon Koops 100%正确地认为这是完全无效的JSON。如果你能以你需要的格式获取数据,那总是最好的。我相信它是
[[]]
,而不是[{}]
?@konko根据需要也会有效。对象数组或数组数组。对象数组[{}]非常常见,尤其是在使用angular时,这看起来像是此人(使用$scope进行猜测)。很抱歉,这里有键。我是凭记忆打字的。我编辑了这篇文章。但是不,它是[{启动子数据。我使用的是php json_编码函数。它来自一个数据库。非常感谢。太棒了!非常感谢。工作非常有魅力!
var original = [
{'City':'Philadelphia','State':'Pennsylvania','Country':'United States'},
{'City':'Pittsburgh','State':'Pennsylvania','Country':'United States'},
{'City':'Harrisburg','State':'Pennsylvania', 'Country':'United States'},
{'City':'Sacramento', 'State':'California', 'Country':'United States'},
{'City':'Fremont', 'State':'California', 'Country':'United States'},
{'City':'Los Angeles', 'State':'California','Country': 'United States'},
{'City':'Sydney', 'State':'New South Wales', 'Country':'Australia'},
{'City':'Melbourne', 'State':'Victoria', 'Country':'Australia'}
]
var json = {};
for(var i in original){
var country = original[i].Country;
var state = original[i].State;
var city = original[i].City;
var obj = {};
if(!json.hasOwnProperty(country)){
obj[state] = [city];
json[country] = obj;
}
else if(json[country].hasOwnProperty(state)){
json[country][state].push(city);
}
else if(!json[country].hasOwnProperty(state)){
json[country][state] = [city];
}
}