如何从这个json对象中检索一个值?

时间:2012-01-03 22:39:12

标签: javascript jquery json

<script>
var output = {"regions":{"4441":"Avtonomna Respublika Krym","4431":"Cherkas'ka Oblast'","4432":"Chernihivs'ka Oblast'","4433":"Chernivets'ka Oblast'","4434":"Dnipropetrovs'ka Oblast'","4435":"Donets'ka Oblast'","4436":"Ivano-Frankivs'ka Oblast'","4437":"Kharkivs'ka Oblast'","4438":"Khersons'ka Oblast'","4439":"Khmel'nyts'ka Oblast'","4440":"Kirovohrads'ka Oblast'","4443":"Kyyivs'ka Oblast'","4445":"L'vivs'ka Oblast'","4444":"Luhans'ka Oblast'","4442":"Misto Kyyiv","4450":"Misto Sevastopol","4446":"Mykolayivs'ka Oblast'","4447":"Odes'ka Oblast","4448":"Poltavs'ka Oblast'","4449":"Rivnens'ka Oblast'","4451":"Sums'ka Oblast'","4452":"Ternopil's'ka Oblast'","788":"Ukraine","4453":"Vinnyts'ka Oblast'","4454":"Volyns'ka Oblast'","4455":"Zakarpats'ka Oblast'","4456":"Zaporiz'ka Oblast'","4457":"Zhytomyrs'ka Oblast'"}}

alert(output.regions[1]);
</script>

这部分给我未定义:

alert(output.regions[1]);

我如何获取第一个键/值对,例如。基本上我需要将其转换为选择下拉列表,数字键将是值,城市的名称将是选项文本。

6 个答案:

答案 0 :(得分:3)

可以像:

一样迭代它
for(key in output.regions) { 
    alert(key +' => '+output.regions[key]);  // 4441 => Avtonomna Respublika Krym  ...etc
}

答案 1 :(得分:2)

您需要使用您指定的键(例如regions4441等)键入4431,而不是数字索引:

var output = {"regions":{"4441":"Avtonomna Respublika Krym","4431":"Cherkas'ka Oblast'","4432":"Chernihivs'ka Oblast'","4433":"Chernivets'ka Oblast'","4434":"Dnipropetrovs'ka Oblast'","4435":"Donets'ka Oblast'","4436":"Ivano-Frankivs'ka Oblast'","4437":"Kharkivs'ka Oblast'","4438":"Khersons'ka Oblast'","4439":"Khmel'nyts'ka Oblast'","4440":"Kirovohrads'ka Oblast'","4443":"Kyyivs'ka Oblast'","4445":"L'vivs'ka Oblast'","4444":"Luhans'ka Oblast'","4442":"Misto Kyyiv","4450":"Misto Sevastopol","4446":"Mykolayivs'ka Oblast'","4447":"Odes'ka Oblast","4448":"Poltavs'ka Oblast'","4449":"Rivnens'ka Oblast'","4451":"Sums'ka Oblast'","4452":"Ternopil's'ka Oblast'","788":"Ukraine","4453":"Vinnyts'ka Oblast'","4454":"Volyns'ka Oblast'","4455":"Zakarpats'ka Oblast'","4456":"Zaporiz'ka Oblast'","4457":"Zhytomyrs'ka Oblast'"}}

alert(output.regions[4441]); // alerts "Avtonomna Respublika Krym"

答案 2 :(得分:1)

区域实体是一个对象而不是一个数组,因此您必须通过其关联的键选择其属性。

output.regions.4441

output.regions['4441']

答案 3 :(得分:1)

键“region”的值是一个映射,而不是一个数组 - 它没有排序,因此没有“第一个键/值对”的概念 - 如果你想要你必须强加你自己的排序之一。

答案 4 :(得分:1)

这是因为output.regions是一个对象,而不是一个数组。您可能需要通过ID(778)访问,或者如果您不知道它,则可以迭代查找它。

for (k in output.regions) { var key = k; break; }
alert(output.regions[key]);

答案 5 :(得分:1)

没有“第一”价值。未订购javascript对象的属性。您可以迭代这样的javascript对象:

for(key in output.regions){
   alert(output.regions[key])
}

并检查迭代周期,但无法保证订单不会意外更改。要获得有保证的订单,您需要使用数组。