2012-06-15 45 views
4

我有以下json对象。javascript/jquery解析json的顺序相同

var json1 = {"00" : "00", "15" : "15", "30" : "30", "45" : "45"}; 

我正在准备一个select元素来解析上面的json,如下所示。

var selElem = $('<select>', {'name' : name, 'grp' : grp}); 
for(key in json1) 
    selElem.append($('<option>', {value:key, text: json1 [key]})); 

但创建的select元素如下。

<select> 
    <option value="15">15</option> 
    <option value="30">30</option> 
    <option value="45">45</option> 
    <option value="00">00</option> 
</select> 

这里的问题是json1对象包含00作为第一个元素,但在最后创建的select元素中。

任何解决此问题的方法或解决方案。

+1

的解决方法是,解决方案,不需要,JSON不保证order http://www.json.org/“一个对象是一组无名的名称/值对。” –

回答

6

如果你想维持秩序,使用数组:

var json1 = [{val:"00",txt:"00"}, 
      {val:"15",txt:"15"}, 
      {val:"30",txt:"30"}, 
      {val:"45",txt:"45"}]; 

而且循环播放:

var selElem = $('<select>', {'name' : name, 'grp' : grp}); 
for(var i=0;i<json1.length;(i+=1)){ 
    selElem.append($('<option>', {value:json1[i].val, text: json1[i].txt})); 
} 

检查this jsfiddle

+0

你的解决方案很好......但是'json1 [i] .val'和'json1 [i]。 txt'正在返回undefined ... – Sandeep

+0

你可能没有更新你的json源代码,从根本上说这就是问题...对象属性enemeration不是NEC,以便首次定义属性 – meandmycode

+0

@Sandeep:在我的答案中添加了jsfiddle链接 – KooiInc