2013-03-05 70 views
0

我想下面的网页提取到一个JSON对象:生成成员JSON

http://www.sarajevo-airport.ba/mobile/letovi.php?vrsta=odlasci&dest=Beograd&lang=bos

var mybody = document.getElementsByTagName('body')[0]; 
var table = mybody.getElementsByTagName('table')[0]; 

var jsonObj = []; 

for (var i = 0, row; row = table.rows[i]; i++) 
{ 
    var cell2 = row.cells.length == '1' ? '' : row.cells[1].textContent.trim(); 
    jsonObj.push({ what: row.cells[0].textContent.trim(), value:cell2 }); 
} 
console.log(jsonObj); 

让我这个JSON对象

[ 
    Object { what= "Beograd" , value= "" }, 
    Object { what= "Broj leta" , value= "JU 109, JA 1376" }, 
    Object { what= "Avio-kompanija" , value= "JAT AIRWAYS" }, 
    Object { what= "Tip aviona" , value= "AT72" }, 
    Object { what= "Planirano vrijeme" , value= "06:20" }, 
    Object { what= "Status leta" , value= "Odletio" }, 
    Object { what= "" , value= "" }, 
    Object { what= "Beograd" , value= "" }, 
    Object { what= "Broj leta" , value= "SOP 4121" }, 
    Object { what= "Avio-kompanija" , value= "SOLINAIR LTD" }, 
    Object { what= "Tip aviona" , value= "SF34" }, 
    Object { what= "Planirano vrijeme" , value= "16:35" }, 
    Object { what= "Status leta" , value= "Odletio" }, 
    Object { what= "" , value= "" } 
] 

因为这个页面包含关于2航班的信息 我需要在JSON字符串中添加两个元素描述

  1. flight1
  2. 机票网

所以,我怎么能得到这样的:

{ "Flight1": [ 
    Object { what= "Beograd" , value= "" }, 
    Object { what= "Broj leta" , value= "JU 109, JA 1376" }, 
    Object { what= "Avio-kompanija" , value= "JAT AIRWAYS" }, 
    Object { what= "Tip aviona" , value= "AT72" }, 
    Object { what= "Planirano vrijeme" , value= "06:20" }, 
    Object { what= "Status leta" , value= "Odletio" }, 
    Object { what= "" , value= "" }], 

"Flight2": [ 
    Object { what= "Beograd" , value= "" },  
    Object { what= "Broj leta" , value= "SOP 4121" }, 
    Object { what= "Avio-kompanija" , value= "SOLINAIR LTD" }, 
    Object { what= "Tip aviona" , value= "SF34" }, 
    Object { what= "Planirano vrijeme" , value= "16:35" }, 
    Object { what= "Status leta" , value= "Odletio" }, 
    Object { what= "" , value= "" ] 

}

回答

0

你在做什么,是建立基本的JavaScript对象。顺便说一句,你可以这样做:

var jsonObject = {}; // create object 
jsonObject["foo"] = ["a", "b"]; // create associative indexes, so called members 
jsonObject.bar = {} 
jsonObject.something = 10; 

将其序列化到JSON,最好的选择是JSON.stringify(),它转换你的JS对象的JSON字符串,jQuery.parseJSON(),这JSON字符串转换回一个JS对象。你将需要jQuery来使用这些方法。

0

您可以检查<hr>元素通过你的对象进行迭代:

var mybody = document.getElementsByTagName('body')[0]; 
var table = mybody.getElementsByTagName('table')[0]; 

var jsonObj = [], flights = {}, numFlights = 1; 

for (var i = 0, row; row = table.rows[i]; i++) 
{ 
    if (row.cells[0].innerHTML == "<hr>") { 
     flights["Flight"+(numFlights++)] = jsonObj; 
     jsonObj = []; 
    } 
    else { 
     var cell2 = row.cells.length == '1' ? '' : row.cells[1].textContent.trim(); 
     jsonObj.push({ what: row.cells[0].textContent.trim(), value:cell2 }); 
    } 
} 
console.log(flights);