2011-09-23 46 views
0

基本上,我正在處理包含四個不同JSON「thingies」(objetcs,arrays)的頁面。原諒我缺乏適當的術語。JSON怪異需要更優雅的方法

當我得到的JSON,它就會出現,帶着一幫子對象的對象,每個「子對象」是這樣的:

"token":"government", 
"title":"Government", 
"isSelected":false, 
"type":"CATEGORY", 
"subtype":"INDUSTRY", 
"count":12 

所以第一個任務是遍歷每個JSON並填充一個填充複選框的框,使用title作爲標籤,並使用isSelected來指示檢查的狀態。到現在爲止還挺好。我拿起了一個JS腳本來檢查一個對象是JSON還是一個數組,然後根據那個「快速&髒」測試,我的對象是一個數組。或者一個數組對象(你知道,它是用[ ]創建的,另一個是用{ }創建的)?

無論如何,當最終用戶檢查和取消選中複選框時,我需要跟蹤它並立即將更改發送回服務器(當用戶單擊完成按鈕時)。令人瘋狂的是,通過遍歷對象,我可以將isSelected的值更改爲true。 。 。只是不回false

for(var i = 0; i < $array.length; i++){ 
    $array[z].isSelected = true; 
} 

也許我得太晚時,我曾在這一切,但使用同樣的方法,我不變化$array[z].isSelectedfalse得到取消選中複選框。最後,我將JSON「thingy」轉換爲字符串,搜索並替換相應的值,然後將字符串轉換回對象。這一切現在都奏效了,但我感覺好像我剛用完了一卷膠帶放在了一些可以通過很好地將它們拼湊在一起的東西上。

問題:我完全錯過了船,有沒有簡單的方法來改變JSON對象的值?

如果是這樣,你能指出我在正確的方向嗎?

+1

您使用我作爲你的索引循環,但是使用Z代表訪問數組元素的引用。如果你剪下並粘貼了代碼,那就是你的問題。 – Gopherkhan

+0

如果你知道它是一個對象數組,你爲什麼一直稱它爲'thingy'? – Dennis

+0

這就像你想要做的事情? http://jsfiddle.net/Hjp3A/ – Dennis

回答

1

JSON thingy只是一個javascript對象的字符串表示形式。創建對象的

的一種方式是

var myObject = { 
    "myName": "AName", 
    "myType": "AType" 
}; 

這個對象可以作爲myObject被引用,與屬性myObject.myNamemyObject.myType含有值ANameAType

您應該能夠通過名稱只是引用對象objName.tokenobjName.title

如果你有麻煩嘗試解析與JavaScript的JSON然後引用如上結果。這應該使您更容易訪問,操作或刪除對象屬性中的數據。

這些如下嵌套可以作爲myObject.moreProperties.prop1

var myObject = { 
    "myName": "AName", 
    "myType": "AType", 
    "moreProperties": { 
     "prop1": "vaue1", 
     "prop2": "vaue2", 
    } 
};