javascript - JSON - 搜索具有变量名称的键(未知)

标签 javascript jquery json jsonp

这里是 JSON 新手。我正在尝试循环访问一些 JSON 以从对象内部的数组中提取第一张图像,经过 4 小时的处理后,我决定我可能需要一些帮助。

我能够从我知道 key 的对象中提取我需要的每个值,但是我有一些数据具有不一致的 key 名称,我需要通过查找部分匹配然后提取这些结果的第一个。

未知元素的Json结构是这样构造的:

"custom_fields": {
    "content_0_subheading": [
      "Title text"
    ],
    "content_1_text": [
      "Some text"
    ],
    "content_2_image": [
      [
        "http://staging.livelivelyblog.assemblo.com/wp-content/uploads/2013/09/wellbeing-260x130.jpg",
        260,
        130,
        true
      ]
    ],
    "content_2_caption": [
      ""
        ]
}

在这种情况下,我所追求的是 content_2_image,但在另一个条目中,据我所知,它可能是 content_20_image(正在提取大量数据)。

对于循环遍历这些未知键以查找键中“_image”的部分匹配项或其他内容的最佳方法的任何想法,我们将不胜感激。

谢谢!

最佳答案

您不能仅通过部分匹配搜索每个字段,因此您必须遍历每个字段,然后检查匹配的字段名称。尝试这样的事情:

var json = {
  "content_0_subheading": [
    "Title text"
  ],
  "content_1_text": [
    "Some text"
  ],
  "content_2_image": [
    [
      "http://staging.livelivelyblog.assemblo.com/wp-content/uploads/2013/09/wellbeing-260x130.jpg",
      260,
      130,
      true
    ]
  ],
  "content_2_caption": [
    ""
  ]
}

for (var key in json) {
    if (json.hasOwnProperty(key)) {
        if (/content_[0-9]+_image/.test(key)) {
            console.log('match!', json[key]); // do stuff here!
        }
    }
}

基本上,我们正在做的是:

1) 遍历 json 对象的键 for (var key in json)

2) 确保 json 具有属性,并且我们没有访问不需要的 key if (json.hasOwnProperty(key))

3) 检查key是否匹配正则表达式/content_[0-9]+_image/

3a) 基本上,测试它是否与 content_ANY NUMBERS_image 匹配,其中 ANY NUMBERS 至少等于一位或更多

4) 随意使用该数据 console.log(json[key])

希望这对您有所帮助!

关于javascript - JSON - 搜索具有变量名称的键(未知),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18910976/

相关文章:

jquery - 如何不触发 child 的点击事件

javascript - JSON 不返回对象

javascript - JS : What keyboard keys are specified for key codes in intervals 146-185, 193-218?

javascript - 如何使用 document.getElementsByClassName() 访问 <label> 的 childNode?

javascript - 如何在 jquery 中获取多个延迟调用的 ajax 结果?

javascript - 与表单选择一起使用时的 jQuery 同位素过滤器问题

javascript - 如何隐藏点击的元素并显示不同的元素

javascript - 使用 Nodejs 和 Express 进行异步调用

c# - 使用 C# API 在 BigQuery 中插入带有嵌套记录的行

javascript - Angularjs ng-show == ID?