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

Javascript 在不知道密钥名称的情况下访问JSON对象的元素,javascript,asp.net,json,vb.net,for-loop,Javascript,Asp.net,Json,Vb.net,For Loop,以下是我的json: {"d":{"key1":"value1", "key2":"value2"}} 是否有任何方法可以在不知道键是什么的情况下访问该数组中的键和值(在javascript中) 我的json采用这种结构的原因是我通过jquery调用的webmethod返回了一个字典。如果无法使用上述方法,我需要改变返回数据的方式吗 以下是我的webmethod的概要: <WebMethod()> _ Public Function Foo(ByVal Input As

以下是我的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
_
公共函数Foo(作为字符串的ByVal输入)作为字典(字符串的,字符串的)
Dim结果作为新字典(字符串的,字符串的)
“代码确实有用
结果。添加(键、值)
返回结果
端函数

这就是你要找的吗

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

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

for (var key in obj.d) {
    console.log("Key: " + key);
    console.log("Value: " + obj.d[key]);
}
通过使用单词“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);
  }
}
这将消除
对象{color1:“灰色”、color2:“黑色”、color3:“蓝色”}
在控制台中的显示

现在我们需要遍历变量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]);}
    }
 }

如果我们使用key name或id,那么很容易从JSON对象获取值,但这里我们不使用key name或id获取值。

使用for循环来实现同样的目的。
var-dlist={country:['ENGLAND',name:['CROSBY']}
for(数据列表中的var键){
var keyjson=dlist[key];
log(keyjson)
}
要访问第一个密钥写入,请执行以下操作:

   let firstKey=Object.keys(d)[0];
let firstValue= d[firstKey];
要访问第一个键写入的值,请执行以下操作:

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

提示:不要调用JavaScript对象JSON对象。JSON是传输格式。一旦解析,就没有JSON.Tip2:一种更简洁的方法来警告多个值:
alert([key,value])
@atas Goral我对var名称的含义是它包含JSON数据,而不是JSON对象。我想这是个糟糕的选择。谢谢。接受了另一个答案,因为它对我的json数据进行了微调。@Radu不客气,没问题。很高兴我们能帮助你。太好了。如果只有一个键值对,我是否仍然需要使用
for in
呢?@Radu您无法使用索引访问对象的属性,因此您需要使用for…in获取键。如果JSON有一个对象列表,并且您想要获取对象名,该怎么办?比如{“d”:{“key1”:“value1”,“key2”:“value2”},“e”:{“key1”:“value1”,“key2”:“value2”}}并且您想要d和e的名称,但您不知道它们在运行时被称为d和e。您可能需要在块内部使用
obj.d.hasOwnProperty(key)
来清除内部私有属性。这为我节省了6个多小时的搜索时间。与firebase树中的深层子级配合良好。“访问此数组中的键和值(javascript格式)”-什么数组。。?