0

次のページを 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 文字列に 2 つの要素を追加する必要があります

  1. フライト1
  2. フライト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= "" ]

}

4

3 に答える 3

0

あなたがしているのは、基本的なjavascriptオブジェクトを作成することです。ちなみにあなたはこれを行うことができます:

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

JSON.stringify()JSONにシリアル化するには、jsオブジェクトをJSON文字列に変換する、およびJSON文字列をjsオブジェクトに変換するのが最適なオプションですjQuery.parseJSON()。これらのメソッドを使用するには、 jQueryが必要です。

于 2013-03-05T21:34:03.297 に答える
0

Objectは有効な JSON 要素ではありません。

ここで JSON を検証できます: http://jsonlint.com/

于 2013-03-05T21:30:42.350 に答える
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);
于 2013-03-05T21:59:54.610 に答える