2011-05-18 56 views
2

我目前的JSON文件:JSON:如何選擇另一個數組內的數組?

[{"id":"1","images":[{"img_id":"1"},{"img_id":"2"},{"img_id":"3"}]}, 
[{"id":"2","images":[{"img_id":"1"},{"img_id":"2"},{"img_id":"3"}]} 

如何選擇ID爲1的陣列,並列出每一個「img_id」裏面,沒有重複,就可以爲其他陣列?

編輯1: 我試圖解析它這樣的,但是這個代碼是錯誤的:

$("#button").click(function() { 
$.getJSON("../path/to/json", function(data) { 
$.each(data[0].images.img_id, function(i,data){ 
var new_data ="<p src='path/to/folder/"+images.img_id+"'></p>";    
$(new_data).appendTo("#htmlTag"); 
}); 
}); return false; 
}); 

大加讚賞。

+0

什麼編程語言? – lonesomeday 2011-05-18 20:42:38

+1

這甚至不是有效的JSON ...你可以仔細檢查一下嗎? – Polaris878 2011-05-18 20:44:37

+0

你在這裏有一個數組與JSON數組與JSON在他們的所有凌亂在你應該重新格式化它 – mcgrailm 2011-05-18 20:45:59

回答

0

你有一個對象數組,其中每個對象包含另一個對象數組。我假設你正在使用的JSON結構是:

var a = [{"id":"1","images":[{"img_id":"1"},{"img_id":"2"},{"img_id":"3"}]}, 
     {"id":"2","images":[{"img_id":"1"},{"img_id":"2"},{"img_id":"3"}]}]; 

我還假設你正在使用JavaScript。


PostEdit:

你的代碼是相當密切的,我相信我有下面應該工作:

$("#button").click(function() { 
    $.getJSON("../path/to/json", function(data) { 
     $.each(data[0].images, function(i,data){ 
      var new_data ="<p src='path/to/folder/" + data.img_id + "'></p>";    
      $(new_data).appendTo("#htmlTag"); 
     }); 
    }); 

    return false; 
}); 

我所做的只是第一個參數更改爲從您的each通話:data[0].images.img_id至:data[0].images

var new_data ="<p src='path/to/folder/"+images.img_id+"'></p>"; 

到:

var new_data ="<p src='path/to/folder/"+data.img_id+"'></p>"; 

注意,參數「數據」中的每一個回調函數是簡單地將陣列中的元素,而「i」的同時,我從改變的new_data聲明是數組中該元素的索引。因此,數據是一個對象,它看起來像這樣:

{"img_id":1} 

所以,你可以通過data.img_id獲得ID。希望這可以幫助。

+0

感謝您的幫助,我編輯了我的文章,我添加了一個我沒有用的代碼,您將如何使用代碼修改它?或者也許正確嗎?謝謝。 – acidking 2011-05-18 22:02:30

+0

非常感謝,工作得很好:-) – acidking 2011-05-19 10:45:11

0

我想你是在談論引用。我不認爲他們可能在JSON中。如果你嚴格需要它們,仍然希望對象可讀序列化 - 我建議你看看YAML

0

我認爲在你的JSON中有一個錯字......它看起來像一個括號丟失在最後,並且在第2行的開頭添加了一個。但是,假設你的意思是這樣的(並且正在使用Javascript ):

var myJson = [{"id":"1","images":[{"img_id":"1"},{"img_id":"2"},{"img_id":"3"}]}, 
      {"id":"2","images":[{"img_id":"1"},{"img_id":"2"},{"img_id":"3"}]}]; 

然後你可以像嵌套的Javascript對象一樣訪問任何你需要的東西。如果你想只訪問與ID等於1,和訂單對象不保證,你將不得不重複:你用

for(var i = 0; i < myJson.length; i++){ 
    if(myJson[i].id === "1"){ 
     var imgs = myJson[i].images; 
     for(var j = 0; j < imgs.length; j++){ 
      //do what you want with imgs[j].img_id 
     } 
    } 
} 
+0

感謝您的提示,是的,它的JavaScript ...我已經編輯我的帖子,包括我有的代碼,你可以看到爲什麼它不工作?非常感激。 – acidking 2011-05-18 22:19:03

相關問題