Json提取和使用数据(node.js)

4

我该如何访问这些数据?

这是我的 Json:

 {
  "6a768d67-82fb-4dd9-9433-d83dbd2f1b78": {
    "name": "Bahut",
    "11": {
      "timestamp": 1380044486000,
      "value": "false"
    }
  },
  "4f4a65e4-c41b-4038-8f62-76fe69fedf60": {
    "name": "Vit",
    "11": {
      "timestamp": 1380109392000,
      "value": "false"
    }
  },
  "a12d22cc-240e-44d6-bc58-fe17dbb2711c": {
    "name": "Cuis",
    "11": {
      "timestamp": 1379883923000,
      "value": "false"
    }
  }
}

我正在尝试读取并提取每个条目的ID(xxxxxxxx-xxxx-...-xxxxxxxxx)和“名称”,然后将它们放入一个数组中。

但是我没有成功。

尝试:

var nameid = json.'XXXXX-....-XXXX'.name;

或者将 '-' 替换为 ''

var nameid = json.XXXXXXXXX.name;

同样没有起作用。

5个回答

7
您需要使用数组式访问来获取与id键相关联的子对象:
var nameid = json["a12d22cc-240e-44d6-bc58-fe17dbb2711c"].name; // or ["name"]
// nameid => "Cuis"

这是因为连字符在JavaScript中不能作为变量名使用,因此无法用于点式访问(dot-style access)。
为了提取所有内容,您需要通过对象循环,并将它们添加到数组中,例如:
var arr = [];
for (var id in json) {
    arr.push(json[id]["name"]);
}

这将为您提供一个包含JSON对象中所有名称的数组。


对于提取,数组的结果给我:0未定义1未定义2未定义。 - Eidas
使用您的确切JSON对象和我的确切代码,复制粘贴后,我在arr中得到了["Bahut", "Vit", "Cuis"] - Isaac

1
你可以使用 Object.keys 来获取属性数组。
var js = JSON.parse(json);
var props = Object.keys(js);

var result = props.map(function(prop) {
  return {
    id: prop,
    name: js[prop].name;
  };
});

最终结果是一个包含两个属性的对象数组:idname

1
如果您想循环遍历数据,请使用 for in 循环:
for (var key in obj) { //obj is your data variable
    console.log(key); //xxxx-x-xx-x-x-xxxx
    console.log(obj[key].name); //the name for each
}

0

像访问数组一样访问JSON,例如:

data["a12d22cc-240e-44d6-bc58-fe17dbb2711c"].name

jsfiddle


0

这不是一种常见的循环方式,但在这种情况下,您可以循环遍历JSON对象

for (var prop in json){
     print("prop",json[prop].name);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接