2012-06-14 76 views
0

它準備好時,我知道我能得到這樣的sooo我的價值觀使用此加載JSONJSON與動態編碼

var jsonParsed = JSON.parse(localStorage.getItem('test')); 

以此來節省

var jsonData = ko.toJSON(viewModel); 

現在...

jsonParsed.AOfficer 

(如果一名軍官是一個具有價值的領域) 我知道上面的代碼會返回json的值f eild AOfficer,但是如何讓它返回json中所有feilds的名稱,例如返回它擁有Aofficer而不是它的值。

林想知道這一點,因爲即時動態地創建使用JSON費爾德名稱表單ID和價值形式價值形式。

感謝

+0

可能重複[讀取未知屬性的名稱](http://stackoverflow.com/questions/6807059/read-name-of-unknown-properties) –

+3

請注意,您的問題與JSON無關。 JSON只是數據的文本表示。您似乎在尋求一種訪問具有未知名稱的對象屬性的方法。閱讀[MDN - 使用對象](https://developer.mozilla.org/en/JavaScript/Guide/Working_with_Objects)也可能會有所幫助。 –

回答

2

假設jsonParsed是一樣的東西:

var field = { 
    "field1": "Test data", 
    "field2": "Test data" 
}; 

你可以這樣做:

for(var field in fields){ 
    if(fields.hasOwnProperty(field)){ 
     console.log(field, fields[field]); 
    } 
}; 

這迭代低谷所有的頂層對象道具並返回其名稱和值。

+0

+1,但請編輯你的代碼,以本地分配添加到循環索引,以防止它泄漏到全局範圍(即'在字段(VAR場)') –

+0

完美答案,謝謝你的幫助! – LmC

+0

是的,對!我忘了:) – Bruno

1

使用for in環可選.hasOwnProperty檢查遍歷對象的屬性。

+1

絕對正確的答案。但只是爲了澄清它的工作是這樣的: 的(我在jsonParsed){如果(jsonParsed.hasOwnProperty(I){執行console.log( '字段名稱: '+ I)的console.log(' 字段值:' + jsonParsed [1]);}} – Adam