javascript - 循环遍历多个 JSON 键

标签 javascript jquery json wordpress

我正在尝试根据通过 Wordpress 返回的 JSON 数据创建一个类别数组。当前输出为:

"property_categories_0_property_category":[  
    "All"
],
"property_categories_1_property_category":[  
    "Hospitality"
],
"property_categories_2_property_category":[  
    "Retail"
],
"property_categories_3_property_category":[  
    "Outdoor Advertising"
],
"property_categories":[  
    "4"
]

我的 JSON 调用是:

$.ajax({
    url: '?json=1',
    type: "POST",
    success: function(data){
      var fields = data.page.custom_fields;

      for (var i = 0; i < fields.property_categories[0]; i++) {
        categories = fields.property_categories_ + i + _property_category[0];
      }

    }
 });

由于尝试在 for 循环中连接键值,因此出现错误。

有什么办法可以实现这一点吗?

完整的 JSON 输出:

{
status: "ok",
page: {
id: 90,
type: "page",
slug: "properties",
url: "http://delcodev:8888/properties/",
status: "publish",
title: "Properties",
title_plain: "Properties",
content: "<div class="map"><div class="marker" data-property-selector="hospitality" data-lat="39.9312311" data-lng="-74.95873819999997"><a style="display:block;" href="http://delcodev:8888/properties/aloft-mount-laurel/">aloft Mount Laurel</a><p>Morbi risus augue, maximus eget pulvinar sed, laoreet ac nulla. Donec et nunc ac ex rhoncus suscipit vel eu orci. Proin nunc nulla, iaculis eget condimentum quis, tincidunt et nisi. In ultrices, massa nec mattis semper, massa odio vulputate ipsum, vitae sollicitudin urna nisl a ante. In hac habitasse platea dictumst. Cras finibus volutpat tortor, &hellip; <a href="http://delcodev:8888/properties/aloft-mount-laurel/" class="more-link">Continue reading <span class="screen-reader-text">aloft Mount Laurel</span></a></p></div><div class="marker" data-property-selector="outdoor advertising" data-lat="39.9195342" data-lng="-75.14346219999999"><a style="display:block;" href="http://delcodev:8888/properties/lowes/">Lowes South Philadelphia</a><p>Donec bibendum lacus urna, sit amet vehicula nibh imperdiet non. Sed consequat diam et odio molestie, sed faucibus orci fringilla. Proin suscipit sit amet felis mattis venenatis. Pellentesque sit amet feugiat metus. Duis id sapien egestas, eleifend est sagittis, egestas tortor. Pellentesque quis mi vitae augue sodales commodo. In nec efficitur ante. Pellentesque et pharetra &hellip; <a href="http://delcodev:8888/properties/lowes/" class="more-link">Continue reading <span class="screen-reader-text">Lowes South Philadelphia</span></a></p></div><div class="marker" data-property-selector="retail" data-lat="39.9699176" data-lng="-74.91403300000002"><a style="display:block;" href="http://delcodev:8888/properties/starbucks-mount-laurel/">Starbucks Mount Laurel</a><p>Sed dignissim justo vitae sem gravida, ac sodales justo suscipit. Sed pulvinar iaculis magna, eu viverra nunc eleifend in. Phasellus bibendum dui at metus rhoncus, ac molestie enim tincidunt. Vivamus placerat ut sem non dignissim. Proin molestie id magna at interdum. Donec venenatis metus sit amet hendrerit consectetur. Maecenas commodo urna venenatis varius aliquet. Nunc &hellip; <a href="http://delcodev:8888/properties/starbucks-mount-laurel/" class="more-link">Continue reading <span class="screen-reader-text">Starbucks Mount Laurel</span></a></p></div><div class="marker" data-property-selector="retail" data-lat="39.948684" data-lng="-75.160755"><a style="display:block;" href="http://delcodev:8888/properties/starbucks-center-city/">Starbucks Center City</a><p>Integer sed nibh sit amet urna tristique pretium eget at arcu. Nulla nec enim interdum, suscipit ipsum at, rutrum orci. Phasellus est nibh, euismod nec ex a, malesuada semper metus. Duis ut blandit lectus, ac ullamcorper tortor. Phasellus vel porta augue, id maximus est. Proin aliquet euismod lacus, ut vestibulum leo dictum nec. Cum sociis &hellip; <a href="http://delcodev:8888/properties/starbucks-center-city/" class="more-link">Continue reading <span class="screen-reader-text">Starbucks Center City</span></a></p></div></div> ",
excerpt: "",
date: "2015-11-19 18:57:45",
modified: "2015-11-24 21:44:48",
categories: [ ],
tags: [ ],
author: {
id: 1,
slug: "delcodev",
name: "delcodev",
first_name: "",
last_name: "",
nickname: "delcodev",
url: "",
description: ""
},
comments: [ ],
attachments: [ ],
comment_count: 0,
comment_status: "closed",
custom_fields: {
client_logo_grid_0_client_logo: [
"39"
],
client_logo_grid_1_client_logo: [
"38"
],
client_logo_grid_2_client_logo: [
"35"
],
client_logo_grid_3_client_logo: [
"39"
],
client_logo_grid_4_client_logo: [
"36"
],
client_logo_grid_5_client_logo: [
"34"
],
client_logo_grid: [
"6"
],
mp4_video: [
"14"
],
webm_video: [
"15"
],
video_poster: [
"16"
],
property_categories_0_property_category: [
"All"
],
property_categories_1_property_category: [
"Hospitality"
],
property_categories_2_property_category: [
"Retail"
],
property_categories_3_property_category: [
"Outdoor Advertising"
],
property_categories: [
"4"
]
}
}
}

最佳答案

您没有连接任何键,您在这里所做的是求和或连接字符串,其中 fields.property_categories_ 是一个属性,i 是其他,_property_category [0] 另外,您必须做的是使用查找模板/括号符号 ,像这样:

  var fields = data.page.custom_fields;

  for (var i = 0; i < fields.property_categories[0]; i++) {
    categories = fields['property_categories_' + i + '_property_category'][0];
  }

example: obj[property_name]

关于javascript - 循环遍历多个 JSON 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34030305/

相关文章:

javascript - 尝试使用 javascript/jquery 查找 Canvas 的高度

javascript - 即使设置 SameSite=None,Safari 也不发送 cookie;安全的

javascript - 如何仅在单击表头时在表头上应用样式并在单击任何其他表头时删除样式?

c# - 根据在另一个下拉菜单中选择的值填充下拉菜单/选择

java - 如何从自定义 Gson JsonSerializer 调用另一个序列化程序?

javascript - EditableGrid 无法加载内联 json 数据

javascript - 是否可以为 dimple.js 中的条形图上的堆栈指定特定颜色?

javascript - jQuery 数据表标题与垂直滚动不对齐

javascript - JavaScript 中的 html_entities

jQuery 上下文菜单 - 查找触发它的元素