2016-07-13 14 views
0

我正在嘗試做我自己的基於瓷磚的遊戲;一個非常簡單的。我決定把需要的電平數據寫入到通過我在遊戲引擎的原始嘗試讀取的JSON文件..如何從jQuery中讀取JSON文件的細節?

{ 
    "tileset":"main.png", 
    "layers":[ 
     [ 
      [8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ], 
      [0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ], 
      [0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ], 
      [0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ], 
      [0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ], 
      [0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ], 
      [0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ], 
      [3 ,3 ,3 ,3 ,2 ,0 ,0 ,0 ,0 ,0 ,0 ], 
      [1 ,1 ,1 ,1 ,5 ,0 ,0 ,0 ,0 ,0 ,0 ] 
     ], [ 
      [1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ], 
      [0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ], 
      [0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ], 
      [0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ], 
      [0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ], 
      [0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ], 
      [0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ], 
      [1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ], 
      [1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ] 
     ] 
    ] 
} 

不過,我一個完整的新手到JavaScript和等,甚至jQuery是一個點點頭繞過我的頭。我怎麼讀這個文件,然後將每個圖層的鋸齒狀數組放入他們自己的變量中?

例如取第一層陣列並將其放入,例如var first_layer等等等等

+2

一旦您使用['$ .ajax()'](http://api.jquery.com/jQuery.ajax/)從文件中讀取JSON,就可以像訪問任何普通對象一樣訪問它。所以,第一層數組將是'response.layers [0]'。 –

+0

我認爲@Rory也暗示着你不想加載到多個變量中。保持爲一個,由數組中的索引引用。因此,8行的行將是'response.layers [0] [0]' – Jonathan

+0

這對'$ .getJSON()'函數是否也適用,因爲它只是'.ajax()'的包裝?我嘗試了'var loaded = $ .getJSON(「game/maps/first.json」); console.log(loaded.layers [0]);'但是當評估'loaded.layers'時,控制檯告訴我它是未定義的,或者不是一個對象。 – Splashsky

回答

1

請參閱this小提琴。

您可以使用$.get()function這是jQuery ajax函數的包裝。您如何處理數據取決於您,我只是爲了演示目的而對其進行處理。

$.get("/echo/json/", function(data) { 
    var data = json; // only for fiddle 
    data.layers.forEach(function(layer, index) { 
    $("body").append("<ul class=\"list-unstyled layer\" data-index=\"" + index + "\"></ul>"); 
    layer.forEach(function(row) { 
     $(".layer[data-index=" + index + "]").append("<li>" + JSON.stringify(row) + "</li>"); 
    }); 
    }); 
}, "json"); 

您將需要一個小的調整,以您的JSON數據(層將需要一個數組封裝否則是無效的JSON - check online)。

您可以將/echo/json/更改爲您盒子上JSON文件的URL。數據分配然後是不必要的(我需要它,因爲我不能在小提琴中使用AJAX)。

如果您需要我擴展任何使用的技術,請詢問。

+0

請解釋匿名倒票。 – Jonathan

+1

爲什麼,那麼它不會是匿名的。有點擊敗目的。 –

+0

對不起質量低下的問題......考慮到在這一點上我一直很難嘗試,我真的很困惑,因爲我應該問自己。在發佈這個答案時,我已經能夠根據自己的需要調整它,但是我想一個小例外與可變範圍有關...無論如何,感謝您的時間和答案。 :) – Splashsky