2016-06-16 35 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