2010-07-25 30 views
0

的信息,我有一个JSON输出看起来像这样..如何提取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是编号。的员工。我想循环访问数据,并获得每个使用javascript的员工的ID号,姓名,工作部门和结束日期。

我很感激任何帮助。

谢谢。

+0

你的JSON工作是无效的。您似乎在数组的主体内部具有对象的主体(键:值对)。在对数据做任何明智的事情之前,您需要解决这个问题。 – Quentin 2010-07-25 09:11:05

+2

什么是大规模downvoting,人?它可能只是混淆私人数据时创建的一个错字 - 对这个人很容易。 – kander 2010-07-25 09:16:46

+0

@david对不起我的坏。我想我没有按住Shift键足够长的时间。 – Nick 2010-07-25 09:24:23

回答

6

您的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); 
} 
+0

实际上,它是'jsonData [i] .work [0] .department.name',因为'work'包含一个(冗余)数组。否则,+1。 – Skilldrick 2010-07-25 11:01:33

+1

感谢您的支持;在答案中纠正了它。顺便说一句:在这个数据集中它是多余的,但我可以想象有人在彼此之后有两个功能 - 两者都有不同的起始。 – kander 2010-07-25 11:56:44

+0

是的,你是对的。值得注意的任何方式,因为视图代码将不得不改变,以适应多个部门,如果使用。 – Skilldrick 2010-07-25 14:19:06

0

一旦你解决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>