在不知道密钥名称的情况下访问JSON对象的元素

时间:2011-02-25 05:09:35

标签: javascript asp.net json vb.net for-loop

这是我的json:

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

有没有办法在不知道键是什么的情况下访问此数组中的键和值(在javascript中)?

我的json结构的原因是我通过jquery调用的web方法返回一个字典。如果无法使用上述内容,我需要更改有关返回数据的方式吗?

以下是我的网络方法概述:

<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

5 个答案:

答案 0 :(得分:53)

您可以使用for..in构造迭代对象的任意属性:

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

答案 1 :(得分:9)

这是你要找的吗?

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

答案 2 :(得分:3)

使用for循环来实现相同的目的。

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

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

答案 3 :(得分:2)

使用word&#34; b&#34;,您仍在使用密钥名称。

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。

答案 4 :(得分:0)

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

要访问第一个键,请执行以下操作:

   let firstKey=Object.keys(d)[0];

要访问第一个键写入的值:

let firstValue= d[firstKey];