2016-06-16 30 views
1

我正試圖檢索下面的JSON的「信息」部分。正如你可以在我的代碼中看到的,我使用如何檢索EJS中的對象內的對象

<%= person['person_details']%> 

來檢索JSON的該部分。這返回[Object Object]。我想要做的是檢索JSON a.k.a的info部分中的所有內容:「jim」「bob」「true」和「兩個人走進酒吧,一個說:ow!」。一些JSON沒有相同的字段(我在下面添加了另一個示例)。我試過...

<%= person['person_details'][0][1]%> 

但是,這會給出一個錯誤。如果我刪除[1],它會在我的下拉菜單中返回一個空數量。

<div class="personForm"> 
    <form> 
     Select Parameters 
     <select id="personIdList"> 
      <% data1.forEach(function(person) {%> 
      <option><%= person['person_details']%> 
      <% }); %></option> 
     </select> 
    </form> 
</div> 


//JSON THAT IM ATTEMPTING TO EXTRACT 
"person_details": { 
    "info": { 
     "name": "Jim", 
     "lastName": "Bob", 
     "isMale": true, 
     "favJoke": "Two guys walk into a bar, one says: ow!" 
    } 
}, 
//EXAMPLE 2 
"person_details": { 
    "info": { 
     "email": "[email protected]", 
     "lastName": "tim", 
     "isMale": true, 
     "momMaidenName": "felicia" 
    } 
}, 
//EXAMPLE 3 (info changes to information) 
"person_details": { 
    "information": { 
     "email": "[email protected]", 
     "lastName": "tim", 
     "isMale": true, 
     "momMaidenName": "felicia" 
    } 
}, 
+0

'<%= person ['person_details'] ['info'] ['name']%> // Jim'?等等...... – Marcus

+0

@Marcus'code <%= person ['person_details'] ['info']%>'作品並返回一個[Object Object],但... 'code <%= person ['person_details '] ['info'] ['name']%>'返回錯誤 – AnonUser

+0

返回什麼*錯誤*? – Marcus

回答

1

您需要遍歷每個人各自的person_details的密鑰。從那裏你將使用關鍵字驢訪問器的值。

例如:

<% data1.forEach(function(person) {%> 
    <option> 
    <% Object.keys(person.person_details.info).forEach(function(key) { %> 
     <%= person.person_details.info[key] %> 
    <% }); %> 
    </option> 
<% }); %> 

這是一個動態的方式,可與任何一組您在info哈希有鍵/值的工作。

如果您的person_details信息散列包含不同的名稱,您可以在循環中使用猴子補丁(儘管我建議您將數據標準化並改爲使用第一個示例)。

<% data1.forEach(function(person) {%> 
    <% var infoKey = infoKey = Object.keys(person.person_details)[0]; %> 
    <option> 
    <% Object.keys(person.person_details[infoKey]).forEach(function(key) { %> 
     <%= person.person_details[infoKey][key] %> 
    <% }); %> 
    </option> 
<% }); %> 

在本例中,動態地找到信息鍵的名稱,並將其設置爲infoKey變種。從那裏你使用它作爲訪問者。

+0

如何設置鍵值? – AnonUser

+0

請注意詳細說明嗎?你的問題有點含糊。因爲你的數據來自'data1',所以你不需要在你的案例中設置任何東西。 – Seth

+0

啊,我看到了,對此感到抱歉,沒有以正確的方式思考。還有一個問題,如果你不介意。可以說,JSON的「信息」部分更改爲「信息」。這仍然有效嗎?我將編輯我的代碼的底部並添加另一個示例供您查看。 – AnonUser