Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要帮助将JSON数据转换为javascript中的3级多维数组_Javascript_Php_Arrays_Json_Multidimensional Array - Fatal编程技术网

我需要帮助将JSON数据转换为javascript中的3级多维数组

我需要帮助将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',

我需要帮助将JSON数据转换为javascript中的3级多维数组。我以JSON格式检索的代码如下所示:

[
 {'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];
    }
  }