Javascript 复杂JS对象

Javascript 复杂JS对象,javascript,json,google-visualization,webtrends,Javascript,Json,Google Visualization,Webtrends,我正在处理一个相当复杂的JSON数组,如下所示。我正在尝试创建一个包含访问的Country对象数组。以下是该阵列的一个示例: { "data":[ { "period":"Month", "start_date":"2012-06", "end_date":"2012-07", "attributes":{ }, "measures":{ "Vi

我正在处理一个相当复杂的JSON数组,如下所示。我正在尝试创建一个包含访问的Country对象数组。以下是该阵列的一个示例:

{
   "data":[
      {
         "period":"Month",
         "start_date":"2012-06",
         "end_date":"2012-07",
         "attributes":{

         },
         "measures":{
            "Visits":1000000
         },
         "SubRows":[
            {
               "Unknown":{
                  "measures":{
                     "Visits":1000
                  },
                  "SubRows":null
               },
               "**":{
                  "measures":{
                     "Visits":1000
                  },
                  "SubRows":null
               },
               "Afghanistan":{
                  "measures":{
                     "Visits":1000
                  },
                  "SubRows":null
               },
               "Aland Islands":{
                  "measures":{
                     "Visits":1000
                  },
                  "SubRows":null
               },
               "Albania":{
                  "measures":{
                     "Visits":100
                  },
                  "SubRows":null
               },
            }
         ]
      }
   ]
}
我正在使用
数据[0].SubRows[0]
来深入研究一组country对象,但现在我被难倒了,因为每个子对象的名称都不同,如何在下面找到一个?我的预期输出用于Google Visualization API,如下所示:

var data = google.visualization.arrayToDataTable([
  ['Country', '% Visits'],
    ['United Kingdom', 1000],
    ['United States', 1000],
    ['France', 1000],
    ['Australia', 1000],
]);

用于。。。在声明中:

var Country = JSONObject['data']['SubRows'];
var Data = {};
for(name in Country)
{
    Data[name] = Country[name]['measures']['Visits'];
}

这应该很容易与您的需要相匹配。

用于。。。在声明中:

var Country = JSONObject['data']['SubRows'];
var Data = {};
for(name in Country)
{
    Data[name] = Country[name]['measures']['Visits'];
}

这应该很容易与您的需要相匹配。

Glibnes在中提出了
for的建议,坚持使用您的变量名(顺便说一句:在JS中,这些是对象,不是数组……嗯,数组是对象,但我不会那么迂腐)

度量现在将是一个一级对象,其中国家是关键,值是访问。请随意添加传统检查,或直接使用这些值来构建内容或。。。随便

如果我理解正确的话,您真正需要的是一个数组:

var result = [['Country', '% Visits']];
for (var cName in data[0].SubRows[0])//your country objects
{
    if (data[0].SubRows[0].hasOwnProperty(cName))
    {
        result.push([cName,data[0].SubRows[0][cName].measures.Visits]);
    }
}
result
现在将是一个数组,由数组组成,每个数组有2个值<代码>结果[x][0]
->国家和
结果[x][1]
->度量值。访问:

result[1][0] === 'United Kingdom' && result[1][1] == 1000

Glibnes在
建议中使用了
for,坚持使用变量名(顺便说一句,在JS中,这些是对象,不是数组……好吧,数组是对象,但我不会那么迂腐)

度量现在将是一个一级对象,其中国家是关键,值是访问。请随意添加传统检查,或直接使用这些值来构建内容或。。。随便

如果我理解正确的话,您真正需要的是一个数组:

var result = [['Country', '% Visits']];
for (var cName in data[0].SubRows[0])//your country objects
{
    if (data[0].SubRows[0].hasOwnProperty(cName))
    {
        result.push([cName,data[0].SubRows[0][cName].measures.Visits]);
    }
}
result
现在将是一个数组,由数组组成,每个数组有2个值<代码>结果[x][0]
->国家和
结果[x][1]
->度量值。访问:

result[1][0] === 'United Kingdom' && result[1][1] == 1000