【问题标题】:How to extract info from json output如何从json输出中提取信息
【发布时间】:2010-07-25 09:06:14
【问题描述】:

我有一个像这样的 json 输出..

{
   "XXXX": {
      "name": "Dalvin Nieger",
      "work": [
         {
            "department": {
               "name": "Sales"
            },
            "start_date": "0000-00"
         }
      ],
      "link": "http://www.my-site.com/profile.php?id=XXXXX",
      "id": "XXXXXX"
   },
   "XXXXXXX": {
      "name": "Nick Mercer",
      "work": [
         {
            "department": {
               "name": "Marketing"
            },
            "start_date": "0000-00",
            "end_date": "0000-00"
         }
      ],
      "link": "http://www.my-site.com/profile.php?id=XXXXXX",
      "id": "XXXXXX"
   }
}

其中 XXXX 是 ID 号。的员工。我想使用 javascript 遍历数据并获取每个员工的 ID 号、姓名、工作部门和结束日期。

感谢您的帮助。

谢谢。

【问题讨论】:

  • 您的 JSON 无效。您似乎在数组的主体内有一个对象的主体(键:值对)。您需要先解决这个问题,然后才能对数据进行任何明智的处理。
  • 大量的反对票是怎么回事,人们?这可能只是在混淆私人数据时创建的一个错字 - 放轻松。
  • @david 对不起,我的错。我猜我按住 shift 键的时间不够长。

标签: javascript json


【解决方案1】:

您的 JSON 不正确 - 它包含在一个数组中,但您没有在 JSON 数组中使用键。如果您将外括号 ([) 更改为大括号 ({),您就可以在 JavaScript 中遍历 JSON 对象键。有关说明,请参阅here

【讨论】:

    【解决方案2】:

    我不确定我是否完全理解了这个问题,但是假设您将按照所指出的那样解决 JSON 的问题,这会满足您的要求吗?

    for(i in jsonData) {
      console.log("id is " + i);
      console.log("name is " + jsonData[i].name);
      console.log("department is " + jsonData[i].work[0].department.name);
      console.log("enddate is " + jsonData[i].work[0].end_date);
    }
    

    【讨论】:

    • 其实是jsonData[i].work[0].department.name,因为work包含一个(冗余)数组。否则,+1。
    • 感谢您的关注;在答案中更正了它。顺便说一句:在这个数据集中它是多余的,但我可以想象有人在一个之后有两个函数 - 两个函数都有不同的开始日期。
    • 是的,你是对的。无论哪种方式都值得引起注意,因为如果使用视图代码,则必须更改以适应多个部门。
    【解决方案3】:

    一旦你修复了 json,它应该看起来像这样并且像这样工作

    var jsonData = {
       "XXXX": {
          "name": "Dalvin Nieger",
          "work": {
                "department": {
                   "name": "Sales"
                },
                "start_date": "0000-00"
             },
          "link": "http://www.my-site.com/profile.php?id=XXXXX",
          "id": "XXXXXX"
       },
       "XXXXXXX": {
          "name": "Nick Mercer",
          "work": {
                "department": {
                   "name": "Marketing"
                },
                "start_date": "0000-00",
                "end_date": "0000-00"
             },
          "link": "http://www.my-site.com/profile.php?id=XXXXXX",
          "id": "XXXXXX"
       }
    }
    $.each(jsonData,function(id,data){
      var content = '<p>ID : '+id;
      if(typeof data == 'object')
        $.each(data,function(index,value){
            
         if(typeof value == 'object' && index=='work'){
           content += '<br/>'+index+' : '+value.department.name;
          }else
            content += '<br/>'+index+' : '+value;       
        });
      content += '</p>';
      $('#result').append(content);
       
    })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
    
    <div id="result">
      </div>

    【讨论】:

      猜你喜欢
      • 2019-06-10
      • 2017-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多