当前位置: 首页 > 面试题库 >

JSON-搜索带有变量名的键(未知)

南门展
2023-03-14
问题内容

此处共有JSON noob。我试图通过一些JSON循环从对象内部的数组中提取第一个图像,经过4个小时的尝试,我决定可能需要一些帮助。

我能够从我知道键的对象中拉出我需要的每个值,但是我有一些数据具有不一致的键名,我基本上需要通过查找部分匹配项然后从中拉出第一个来进行迭代这些结果。

未知元素的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具有该属性,并且我们不访问不需要的键 if (json.hasOwnProperty(key))

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

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

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

希望这可以帮助!



 类似资料:
  • 我正在尝试扫描多个文件,搜索同一行中的两个关键字。我试图在同一行中寻找关键词“seqadv”和“突变”。问题是我不断得到错误“nameerror:name'wt_resignal'is not defined”。当我搜索一个关键字“seqadv”时,程序运行流畅。

  • 我需要实现一个Binary Search Tree类作为家庭作业,但我很难实现insert函数。我在谷歌搜索了很多,想找到一些解决方案或可能的方法,但他们都没有使用过键和值(大多只是值),或者如果他们也使用了键,他们有很多单独的功能,我想这是不允许的。 因此,预构建的只是: 现在的问题是,如果我想检查例如值是否小于或大于当前节点以将其放在右侧或左侧,我会收到诸如“root未定义”或“root.ri

  • 我想使用JOLT将下面的输入json转换为输出json。这里的主要问题是在列表中,我必须删除一些根键(Param1、Param2、…)会动态不同的字段。我尝试了以下规范,但没有成功。在这种情况下需要帮助。

  • 问题内容: 我有一个对象,希望通过它访问我的Web应用程序。我定义的架构具有一个存储用户ID和3级值(是,可能是或否)。 例如 上面的s是用户会话ID,因此是一长串随机字符。如何 为此创建一个? 会工作吗? 我可以对其进行重组,以使它是一个对象数组,这是可以的,这是最好的选择吗? 问题答案: 如果您在架构中避免使用动态键,而又有了第二个想法,那将会更好。 您可以使用位置运算符通过来更新单个数组元素

  • 目前面临的问题是,对Azure Search API的请求返回“未知错误”。 我拿到了request在postman中工作,并认为在Angular中使用Http客户端在理论上是相同的设置。 错误消息: 错误HttpErrorResponse 邮差回应: 还有一个错误: 预飞响应无效(重定向)

  • 问题内容: 在我的应用程序中,我使用的搜索效果很好,但是我需要建议。当我搜索不带变音符号的文本时,我不知道该怎么办,因为结果也带有变音符号。 示例: 输入搜索Holeovice,我需要找到 Holeovice 以及 Holešovice 。 这是我的代码的一部分: 问题答案: 您可以将选项与变音符号不敏感(还可以选择不区分大小写)一起使用。例: