Javascript 如何在EJS中检索对象内部的对象

Javascript 如何在EJS中检索对象内部的对象,javascript,json,ejs,Javascript,Json,Ejs,我正在尝试检索下面JSON的“info”部分。正如您在我的代码中看到的,我使用 <%= person['person_details']%> 检索JSON的该部分。这将返回[Object]。我想做的是检索JSON a.k.a信息部分的所有内容:“jim”“bob”“true”和“两个家伙走进一个酒吧,一个说:ow!”。一些JSON没有相同的字段(我在下面添加了另一个示例)。我试过做 <%= person['person_details'][0][1]%> 但这

我正在尝试检索下面JSON的“info”部分。正如您在我的代码中看到的,我使用

<%= person['person_details']%>

检索JSON的该部分。这将返回[Object]。我想做的是检索JSON a.k.a信息部分的所有内容:“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": "bobsmit@gmail.com",
        "lastName": "tim",
        "isMale": true,
        "momMaidenName": "felicia"
    }
},
//EXAMPLE 3 (info changes to information)
"person_details": {
    "information": {
        "email": "bobsmit@gmail.com",
        "lastName": "tim",
        "isMale": true,
        "momMaidenName": "felicia"
    }
},

选择参数
//我试图提取的JSON
“人员详细信息”:{
“信息”:{
“姓名”:“吉姆”,
“姓氏”:“鲍勃”,
“isMale”:没错,
“favJoke”:“两个男人走进一家酒吧,其中一个说:噢!”
}
},
//例2
“人员详细信息”:{
“信息”:{
“电子邮件”:bobsmit@gmail.com",
“姓氏”:“蒂姆”,
“isMale”:没错,
“妈妈的名字”:“费莉西亚”
}
},
//示例3(信息对信息的更改)
“人员详细信息”:{
“信息”:{
“电子邮件”:bobsmit@gmail.com",
“姓氏”:“蒂姆”,
“isMale”:没错,
“妈妈的名字”:“费莉西亚”
}
},

您需要循环查看每个人各自的
个人详细信息的按键。从那里,您将使用键作为值的访问器

例如:

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

在本例中,您可以动态查找info键的名称,并将其设置为
infoKey
变量。从那里您可以将其用作访问器。

/Jim
?等等…@Marcus'code'工作并返回一个[Object],但是…'代码“返回一个错误它返回什么错误?@Marcus Ahh它返回的错误是因为不是每个人在JSON中都有相同的顺序。有些人只有名字,有些人有电子邮件等等。。。因此,它返回一个错误,因为它无法从所有对象中提取特定名称,因为我正在使用。foreach如何设置键值?请详细说明?你的问题有点模棱两可。您不需要在您的案例中设置任何内容,因为您的数据来自
data1
。啊,我明白了,很抱歉,我没有以正确的方式思考。如果你不介意的话,还有一个问题。假设JSON的“info”部分更改为“information”。这还能用吗?我将编辑代码的底部,并添加另一个示例供您查看。这将不起作用。。。但很容易调整到工作状态。只需将
info
的两个实例都更改为您的新密钥。在您的情况下,
信息
。当然。。。更新帖子后请告诉我。更新代码后,请查看底部的示例3。
<% 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>
<% }); %>