我正在尝试检索下面JSON的“信息”部分。正如您在我的代码中看到的,我使用
<%= person['person_details']%>
检索JSON的那一部分。这将返回[Object 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"
}
},
答案 0 :(得分:1)
您需要遍历每个人各自的person_details
的密钥。从那里你将使用键值ass访问器。
例如:
<% 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
var。从那里你可以使用它作为访问者。