2016-11-22 49 views
0

我使用Google analytics API从服务器获取JSON消息。我收到的消息是这一个:在JavaScript中解析JSON数组和对象?

{ 
    "reports": [ 
    { 
     "columnHeader": { 
     "dimensions": [ 
      "ga:landingPagePath" 
     ], 
     "metricHeader": { 
      "metricHeaderEntries": [ 
      { 
       "name": "ga:pageviews", 
       "type": "INTEGER" 
      }, 
      { 
       "name": "ga:sessions", 
       "type": "INTEGER" 
      } 
      ] 
     } 
     }, 
     "data": { 
     "rows": [ 
      { 
      "dimensions": [ 
       "/-chandigarh/axis-bank-sarsini-branch_chandigarh_chg_850458.html" 
      ], 
      "metrics": [ 
       { 
       "values": [ 
        "1", 
        "1" 
       ] 
       } 
      ] 
      }, 
      { 
      "dimensions": [ 
       "/267249-1.compliance-alex.xyz" 
      ], 
      "metrics": [ 
       { 
       "values": [ 
        "29", 
        "10" 
       ] 
       } 
      ] 
      }, 
      { 
      "dimensions": [ 
       "/267249-1.compliance-don.xyz" 
      ], 
      "metrics": [ 
       { 
       "values": [ 
        "27", 
        "9" 
       ] 
       } 
      ] 
      }, 
      { 
      "dimensions": [ 
       "/267249-1.compliance-fred.xyz" 
      ], 
      "metrics": [ 
       { 
       "values": [ 
        "20", 
        "7" 
       ] 
       } 
      ] 
      }, 
      { 
      "dimensions": [ 
       "/abohar/axis-bank-the-fazilka-central-cooperative-bank-ltd-branch_abohar_frp_135.html" 
      ], 
      "metrics": [ 
       { 
       "values": [ 
        "1", 
        "1" 
       ] 
       } 
      ] 
      }, 
      { 
      "dimensions": [ 
       "/about-us/career.htm" 
      ], 
      "metrics": [ 
       { 
       "values": [ 
        "8", 
        "5" 
       ] 
       } 
      ] 
      }, 
      { 
      "dimensions": [ 
       "/about-us/company-profile.htm" 
      ], 
      "metrics": [ 
       { 
       "values": [ 
        "34", 
        "14" 
       ] 
       } 
      ] 
      }, 
      { 
      "dimensions": [ 
       "/about-us/infrastructure.htm" 
      ], 
      "metrics": [ 
       { 
       "values": [ 
        "3", 
        "1" 
       ] 
       } 
      ] 
      }, 
      { 
      "dimensions": [ 
       "/adilabad/gk-hospital-multispeciality-care_adilabad_adi_399806.html" 
      ], 
      "metrics": [ 
       { 
       "values": [ 
        "2", 
        "1" 
       ] 
       } 
      ] 
      }, 
      { 
      "dimensions": [ 
       "/ahmedabad/akhani-jagdish-kumar_ahmedabad_ahd_1124498.html" 
      ], 
      "metrics": [ 
       { 
       "values": [ 
        "7", 
        "3" 
       ] 
       } 
      ] 
      } 
     ], 
     "totals": [ 
      { 
      "values": [ 
       "3420452", 
       "1333496" 
      ] 
      } 
     ], 
     "rowCount": 347614, 
     "minimums": [ 
      { 
      "values": [ 
       "0", 
       "1" 
      ] 
      } 
     ], 
     "maximums": [ 
      { 
      "values": [ 
       "56660", 
       "49274" 
      ] 
      } 
     ], 
     "isDataGolden": true 
     }, 
     "nextPageToken": "1000" 
    } 
    ] 
} 

我想解析它并将数据保存在变量中。我将如何解析它。我尝试了很多选择,但没有从JSON获取任何数据。结果显示为undefined。我想获取尺寸喜欢的阵列数据:

var a = "/-chandigarh/axis-bank-sarsini-branch_chandigarh_chg_850458.html"; 

var b = 1; 

var c = 1; 
+2

你试过[JSON.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)来解析json吗? –

+0

“我尝试了很多选择” - 你的[mcve]在哪里? – Quentin

+0

是@KevinKloet我已经试过这个。 –

回答

2

假设你的JSON输入存储在json变量,你可以只是做:

var json = '{"reports":[{"columnHeader":{"dimensions":["ga:landingPagePath"],"metricHeader":{"metricHeaderEntries":[{"name":"ga:pageviews","type":"INTEGER"},{"name":"ga:sessions","type":"INTEGER"}]}},"data":{"rows":[{"dimensions":["/-chandigarh/axis-bank-sarsini-branch_chandigarh_chg_850458.html"],"metrics":[{"values":["1","1"]}]},{"dimensions":["/267249-1.compliance-alex.xyz"],"metrics":[{"values":["29","10"]}]},{"dimensions":["/267249-1.compliance-don.xyz"],"metrics":[{"values":["27","9"]}]},{"dimensions":["/267249-1.compliance-fred.xyz"],"metrics":[{"values":["20","7"]}]},{"dimensions":["/abohar/axis-bank-the-fazilka-central-cooperative-bank-ltd-branch_abohar_frp_135.html"],"metrics":[{"values":["1","1"]}]},{"dimensions":["/about-us/career.htm"],"metrics":[{"values":["8","5"]}]},{"dimensions":["/about-us/company-profile.htm"],"metrics":[{"values":["34","14"]}]},{"dimensions":["/about-us/infrastructure.htm"],"metrics":[{"values":["3","1"]}]},{"dimensions":["/adilabad/gk-hospital-multispeciality-care_adilabad_adi_399806.html"],"metrics":[{"values":["2","1"]}]},{"dimensions":["/ahmedabad/akhani-jagdish-kumar_ahmedabad_ahd_1124498.html"],"metrics":[{"values":["7","3"]}]}],"totals":[{"values":["3420452","1333496"]}],"rowCount":347614,"minimums":[{"values":["0","1"]}],"maximums":[{"values":["56660","49274"]}],"isDataGolden":true},"nextPageToken":"1000"}]}' 
 

 
// Parse the JSON into the data variable 
 
var data = JSON.parse(json); 
 

 
data.reports.forEach(report => { 
 
    report.data.rows.forEach(row => { 
 
    // row.dimensions will contain your 'dimensions' array 
 
    console.log(row.dimensions); 
 
    
 
    row.metrics.forEach(metric => { 
 
     // metric.values will contain your 'values' array 
 
     console.log(metric.values); 
 
    }); 
 
    }); 
 
});

您只需将这些属性存储到您自己的变量中。

+0

@ArunaRajput:通过_exact solution_,你的意思是将属性存储在变量中? – SinDeus

+0

然后请不要犹豫与我们分享您是如何解决您的问题的,@ArunaRajput – SinDeus