2010-05-28 88 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