2016-11-22 43 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