在不知道javascript中的标识符的情况下解析json

时间:2014-07-10 18:00:50

标签: javascript json

我有来自REST服务的JSON有效负载,如下所示:

var jsonify = JSON.stringify(theReturnedData);

console.log(jsonify) = 
{
    "f-012839": {
          "name": "Bob",
          "email": "asdf@gmail.com"
     }
}

如何在不知道“f-012839”的情况下访问电子邮件值?

到目前为止,我尝试的是没有成功的:

var name = jsonify[0].name;
var name = jsonify.name;

“f-012839”值是动态的,我不会事先知道它是什么。如果我能够获得“名称”和“电子邮件”元素而不必知道“f-012839”键是什么,那就太好了。或者,是否可以获取返回的JSON的子集,以便不是具有上述值,而是可以是这样的:

{
    "name": "Bob",
    "email": "asdf@gmail.com"
}

如果可能的话,我应该能够通过简单地执行以下操作来获得任何这些值,对吗?

var name = jsonify.name;

非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:7)

for(var key in theReturnedData) {
  theReturnedData[key] // This is the object you want access to
}

更新还要确保对每个密钥执行检查。您需要过滤掉可以从对象Prototype继承的属性(许多框架将自定义属性添加到对象Prototypes。您可以通过Object.hasOwnProperty(property_name)检查它,所以基本上使用此循环:

for(var key in theReturnedData) {
  if(!theReturnedData.hasOwnProperty(key)) continue;
  theReturnedData[key]
}

答案 1 :(得分:0)

   for(field in JSON.parse(jsonify)) {
      firstObject = jsonify[field];
      console.log(firstObject.name);
      console.log(firstObject.email);
   }