2010-05-28 130 views
2

的檢索關鍵字和值我有一個JSON字符串格式爲:如何從JSON字符串

{ 
    "supplier": { 
    "mov_10": "love actually", 
    "mov_1": "fare" 
    }, 
    "quantity": 20, 
    "success": true, 
    "length":2 
} 

現在我想創建下面使用supplier對象(同時使用的鍵和值)選擇框,像這樣:

<select id="selectme"> 
    <option id="mov_10">love actually</option> 
    <option id="mov_1">fare</option> 
</select> 

那麼我該如何創建它?我只想知道如何在對象中達到mov_10mov_1。 對不起,我的英語不好,但請幫助我。

謝謝。

+2

我清理你的問題一點點,但您參考不更改爲「JSON對象。」這實際上是不正確的。沒有像「JSON對象」這樣的東西。你所擁有的僅僅是對象文字符號中的普通JavaScript對象。您將它與「JSON字符串」混淆起來,它是一種特殊格式化爲對象文字符號子集的字符串。 – 2010-05-28 07:22:01

+0

我可能不正確的命名,但我顯示我得到的數組。 – diEcho 2010-05-28 08:41:53

回答

0

如果我理解正確的問題,我想你可能要沿着這條使用的東西:

var jsonArray = ... ; // {"supplier": ... } (JS Object) 
var supplierOptions = jsonArray.supplier; 

// TODO: remember to set up selectme! 

for(var optionId in supplierOptions) { 
    if(!supplierOptions.hasOwnProperty(optionId)) { 
     continue; 
    } 

    var optionValue = supplierOptions[optionId]; 

    // operate with name and value here (append to select ie.) 
    $("#selectme").append('<option id="' + optionId + '">' + optionValue + '</option>'); 
} 

的代碼也許可以使用一些清理。不過希望它能傳達出基本的想法。

+1

您應該使用'if(!supplier.hasOwnProperty(optionId))continue'來確保您不能在Object原型上使用可枚舉的屬性。 ['hasOwnProperty'](https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference:Global_Objects:Object:hasOwnProperty) – 2010-05-28 07:16:34

+0

好點!我會改變這一點。 – 2010-05-28 07:24:48

+0

什麼'if(!supplier.hasOwnProperty(optionId))'這樣做激動嗎?,請清除 – diEcho 2010-05-28 09:05:10

2

使用for...in語句來遍歷鍵:

for (var k in someObject.supplier) { 
    someOption.value = k; 
    someOption.text = someObject.supplier[ k ]; 
} 
+2

Doug Crockford on..in:「請注意,添加到對象原型的成員將包含在枚舉。通過使用hasOwnProperty方法區分對象的真實成員,防禦性編程是明智的。「 http://javascript.crockford.com/code.html – nickf 2010-05-28 08:21:41