2013-05-03 118 views
0

我有以下JSON對象迭代通過嵌套JSON陣列和改變屬性的值

{ 
    "class": "go.GraphLinksModel", 
     "nodeDataArray": [{ 
     "key": "CTR:2", 
      "type": "Controller", 
      "devicename": "ACU-1K", 
      "deviceid": "2", 
      "imageUrl": "http://localhost:52233/Images/ComputerSpeaker_32.png", 
      "loc": "280 112" 
    }, { 
     "key": "CTR:1", 
      "type": "Controller", 
      "devicename": "C302-1", 
      "deviceid": "1", 
      "imageUrl": "http://localhost:52233/Images/ComputerSpeaker_32.png", 
      "loc": "477 92" 
    }, { 
     "key": "RDR:25", 
      "type": "Reader", 
      "devicename": "1K-1-RDR01", 
      "deviceid": "25", 
      "imageUrl": "http://localhost:52233/Images/Plugin_32.png", 
      "loc": "592 41" 
    }], 
     "linkDataArray": [] 
} 

我想通過nodeDataArray環,和內nodeDataArray

改變IMAGEURL的值針對每個項目

我想這一點,但它不工作

$.each(jsonCoordinates, function(key, value) { 
    var nodeData = value.nodeDataArray; 
    $.each(nodeData, function(k, v) { 
     v.imageUrl = "default"; 
    }); 

}); 

應該如何?

jsonCoordinates包含JSON的上述

回答

1

你不需要嵌套$.each方法,通過直接nodeDataArray迭代。

$.each(jsonCoordinates.nodeDataArray, function(index, value) { 
    value.imageUrl = "default"; 
}); 

http://jsfiddle.net/XSzYM/

一個建議:請始終使用console.log()調試代碼,專門爲通過嵌套對象和數組迭代。

1

由於您jsonCoordinates整個塊不是數組,當你做的每一個它不執行。我認爲你的代碼可以工作,如果你把它包裝在[];

http://jsfiddle.net/Xu9gH/1/

var Data = {"class":"go.GraphLinksModel","nodeDataArray":[{"key":"CTR:2","type":"Controller","devicename":"ACU-1K","deviceid":"2","imageUrl":"http://localhost:52233/Images/ComputerSpeaker_32.png","loc":"280 112"}, 
{"key":"CTR:1","type":"Controller","devicename":"C302-1","deviceid":"1","imageUrl":"http://localhost:52233/Images/ComputerSpeaker_32.png","loc":"477 92"}, 
{"key":"RDR:25","type":"Reader","devicename":"1K-1-RDR01","deviceid":"25","imageUrl":"http://localhost:52233/Images/Plugin_32.png","loc":"592 41"}], 
"linkDataArray":[]}; 

$.each(Data.nodeDataArray, function(k, v) { 
v.imageUrl = "default"; 
}); 

console.log(Data);