2010-07-25 29 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>