2016-05-04 18 views
-1

私は以下のコードで読んでいる次のjsonファイルを持っています。jsonを解析し、JavaScriptでhtmlのテーブルを作成する

{ 
    "17.216.30.177": { 
     "agent": { 
      "agent_ip": "17.216.30.177", 
      "agent_cpu_type": "Intel Core i5", 
      "agent_serial_num": "C02KQ00CFH46", 
      "agent_hostname": "Beautiful-iMac.local", 
      "agent_ram": "16 GB", 
      "agent_processors": "4", 
      "agent_system_type": "iMac14_2" 
     }, 
     "devices": { 
      "fedaa89792fdf9bcfe819cc9981bcda918dc1fa6": { 
       "SerialNumber": "", 
       "HardwareModel": "abc", 
       "WiFiAddress": "abc", 
       "BuildVersion": "abc", 
       "kanzi": "315D0F", 
       "current_state": 1, 
       "UniqueChipID": "612806844428" 
      }, 
      "47d46975e929d679f1c0713f7b060bf80390aeb9": { 
       "SerialNumber": "", 
       "HardwareModel": "lmn", 
       "WiFiAddress": "lmn", 
       "BuildVersion": "lmn", 
       "kanzi": "315DF3", 
       "current_state": 1, 
       "UniqueChipID": "2572890213651" 
      } 
     }, 
     "last_alive_time": "2016-04-27 10:24:14" 
    }, 
    "17.153.73.241": { 
     "agent": { 
      "agent_hostname": "aj-air.local", 
      "agent_cpu_type": "Intel Core i5", 
      "agent_processors": "2", 
      "agent_ip": "17.244.49.99", 
      "agent_serial_num": "C02M300KFY3V", 
      "agent_system_type": "MacBookAir6_2", 
      "agent_ram": "8 GB" 
     }, 
     "devices": { 
      "ccd457202545bef923e2d784f0aa30e12c4dfd43": { 
       "HardwareModel": "pqr", 
       "kanzi": "pqr", 
       "SerialNumber": "", 
       "current_state": 1, 
       "UniqueChipID": "pqr", 
       "WiFiAddress": "pqr", 
       "BuildVersion": "pqr" 
      } 
     }, 
     "last_alive_time": "2016-04-27 10:30:08" 
    } 
} 


    function readTextFile(file, callback) { 
      var rawFile = new XMLHttpRequest(); 
      rawFile.overrideMimeType("application/json"); 
      rawFile.open("GET", file, true); 
      rawFile.onreadystatechange = function() { 
      if (rawFile.readyState === 4 && rawFile.status == "200") { 
       callback(rawFile.responseText); 
      } 
     } 
     rawFile.send(null); 
    } 


    readTextFile("/resources/test.json", function(text){ 
     var data = JSON.parse(text); 
     document.getElementById("demo").innerHTML = data[0]["agent"].agent_ip; 
    }); 

data[0].17.216.30.177["agent"].agent_ip;

どうすればこの仕事をすることができますか?それはdata[0].xyz["agent"].agent_ip;たFF

は、それがうまく動作しますが、理由は腹腔内の期間で、それは私がオブジェクトにJSONファイルを読み取ることができますが、特定のキーの値を取得することはできませんよ

答えて

2

ません。私はこのファイルをサーバから取得します。したがって、問題が発生した場合は[]で配列を取得できません。

この問題は、配列のようにアクセスしているにもかかわらず、オブジェクトの配列がないことです。したがって、受け取ったファイルを配列に変換することも、オブジェクトをそのまま使用してオブジェクトにアクセスする方法を変更することもできます。

主な問題は、各自がデータにアクセスするために参照する必要がある固有のキーがあることです。彼らが事前に鍵を握っていることを知っていれば、それらを連想配列のように使います。それぞれのプロパティにアクセスするには '。'オペレーター。

data["17.153.73.241"].agent.agent_ip; //Agent 2 

それ以外の場合は、それぞれのキーを見つけてそのオブジェクトにアクセスする必要があります。私が取った

data[key].agent.agent_ip 

は、このような状況のためのキーを持つオブジェクトにアクセスする方法にjsfiddleにそれを置きます。

参考文献:

  1. Accessing elements of JSON object without knowing the key names
  2. iterating through json object javascript
  3. Access/process (nested) objects, arrays or JSON
0
 readTextFile("/resources/test.json", function(text){ 
      var data = JSON.parse(text); 
      for (var key in data) { 
       console.log("Agent IP-->", data[key].agent.agent_ip); 
       console.log("Number of devices -->", Object.keys(data[key].devices).length); 
       console.log("Total Number of devices -->", Object.keys(data[key].devices).length); 
      } 

これは私のために働きました。

関連する問題