【问题标题】:Json extract and use data (node.js)Json 提取和使用数据(node.js)
【发布时间】:2013-09-25 19:46:40
【问题描述】:

如何访问这些数据?

这是我的 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;

也没有用。

【问题讨论】:

    标签: javascript json node.js


    【解决方案1】:

    您需要使用数组样式的访问来获取与 id 键关联的子对象:

    var nameid = json["a12d22cc-240e-44d6-bc58-fe17dbb2711c"].name; // or ["name"]
    // nameid => "Cuis"
    

    这是因为连字符不是点式访问的有效字符(不能在 JavaScript 的变量名中使用它们)。

    为了提取所有你需要遍历对象,并将它们添加到数组中,如下所示:

    var arr = [];
    for (var id in json) {
        arr.push(json[id]["name"]);
    }
    

    这将为您提供该 JSON 对象中所有名称的数组。

    【讨论】:

    • 对于提取,数组的结果给我:0 undefined 1 undefined 2 undefined
    • 使用您的确切 JSON 对象和我的确切代码,复制粘贴,我在 arr 中得到 ["Bahut", "Vit", "Cuis"]
    【解决方案2】:

    您可以使用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;
      };
    });
    

    最终结果是一个具有 2 个属性的对象数组:idname

    【讨论】:

      【解决方案3】:

      如果要循环遍历数据,请使用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
      }
      

      【讨论】:

        【解决方案4】:

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

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

        jsfiddle

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 2020-10-22
            • 2016-10-13
            • 1970-01-01
            • 2023-03-04
            • 1970-01-01
            • 1970-01-01
            • 2018-01-09
            • 2018-07-12
            • 1970-01-01
            相关资源
            最近更新 更多