2011-02-25 175 views
15

这里是我的JSON:访问元素

{"d":{"key1":"value1", 
     "key2":"value2"}} 

会有这种访问阵列中(在JavaScript)键和值在不知道密钥是什么样的方法吗?

我的json的结构是这样的,我通过jquery调用的webmethod返回一个字典。如果无法使用上述内容,那么我需要更改关于返回数据的方式?

这里是我的webmethod的轮廓:

<WebMethod()> _ 
Public Function Foo(ByVal Input As String) As Dictionary(Of String, String) 
    Dim Results As New Dictionary(Of String, String) 

    'code that does stuff 

    Results.Add(key,value) 
    Return Results 
End Function 
+1

* “这个访问阵列中(在JavaScript)键和值” * - 什么阵..? –

回答

41

可以使用for..in结构通过你的对象的任意属性迭代:

for (var key in obj.d) { 
    console.log("Key: " + key); 
    console.log("Value: " + obj.d[key]); 
} 
+0

完美。如果只有一个键值对,还需要使用“for in”吗? – Radu

+0

@Radu您无法访问包含索引的对象的属性,因此您需要使用for ... in来获取密钥。 – Xenethyl

+0

@Xenethyl谢谢。 – Radu

8

这是你在找什么?

var data; 
for (var key in data) { 
    var value = data[key]; 
    alert(key + ", " + value); 
} 
+3

提示:请勿调用JavaScript对象的JSON对象。 JSON是传输格式。一旦解析,就没有JSON。 –

+1

提示2:提醒多个值的更简洁的方法:'alert([key,value])' –

+1

@Ates Goral我对var名称的含义是它包含了JSON数据,而不是它是一个JSON对象。我猜想选择不好。 – Xenethyl

2

使用Word“B”,你还在使用密钥名称。

var info = { 
"fname": "Bhaumik", 
"lname": "Mehta", 
"Age": "34", 
"favcolor": {"color1":"Gray", "color2":"Black", "color3":"Blue"} 
}; 

请看下面的代码片段。

for(key in info) { 
    var infoJSON = info[key]; 
    console.log(infoJSON); 
} 

结果将是,

Bhaumik 
Mehta 
Object {color1: "Gray", color2: "Black", color3: "Blue"} 

不希望最后一行显示?请尝试以下代码:

for(key in info) { 
    var infoJSON = info[key]; 
    if(typeof infoJSON !== "object"){ 
     console.log(infoJSON); 
    } 
} 

这将消除控制台中显示的Object {color1: “Gray”, color2: “Black”, color3: “Blue”}

现在我们需要迭代变量infoJSON来获取数组值。看看代码的以下完整的和平。

for(key in info) { 
    var infoJSON = info[key]; 
    if (typeof infoJSON !== "object"){ 
     console.log(infoJSON); 
    } 
} 

for(key1 in infoJSON) { 
    if (infoJSON.hasOwnProperty(key1)) { 
     if(infoJSON[key1] instanceof Array) { 
      for(var i=0;i<infoJSON[key1].length;i++) { 
      console.log(infoJSON[key1][i]); 
      } 
     } else {console.log(infoJSON[key1]);} 
    } 
} 

而现在我们得到的结果作为

Bhaumik 
Mehta 
Gray 
Black 
Blue 

如果我们使用键名称或ID,那么它很容易从JSON对象获得的值,但在这里我们不使用钥匙让我们的价值观名称或ID。

1

用于循环实现相同。

var dlist = { country: [ 'ENGLAND' ], name: [ 'CROSBY' ] } 
 

 
for(var key in dlist){ 
 
    var keyjson = dlist[key]; 
 
    console.log(keyjson) 
 
    }