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

使用jq根据对象中变量的值选择对象

魏岳
2023-03-14
问题内容

我有以下json文件:

{
    "FOO": {
        "name": "Donald",
        "location": "Stockholm"
    },
    "BAR": {
        "name": "Walt",
        "location": "Stockholm"
    },
    "BAZ": {
        "name": "Jack",
        "location": "Whereever"
    }
}

我正在使用jq,并想获取“位置”为“斯德哥尔摩”的对象的“名称”元素。

我知道我可以通过

cat json | jq .[] | jq ."name"
"Jack"
"Walt"
"Donald"

但是给定子键的值(在此"location" : "Stockholm"),我无法弄清楚如何仅打印某些对象。


问题答案:

根据关于使用jq处理JSON的文章改编而成,您可以这样使用select(bool)

$ jq '.[] | select(.location=="Stockholm")' json
{
  "location": "Stockholm",
  "name": "Walt"
}
{
  "location": "Stockholm",
  "name": "Donald"
}


 类似资料:
  • 问题内容: 鉴于此输入: 我正在尝试使用jq构造一个过滤器,该过滤器返回s的所有对象,这些s 的内部数组中 不 包含“数据” ,并且输出以换行符分隔。对于以上数据,我想要的输出是 我想我与此有点接近: 但过滤器不正确,并且无法编译(获取)。 问题答案: 很接近!在表达式中,您必须在之前使用管道()。 该滤波器产生预期的输出。 的JQ食谱具有语法的一个例子。 例如,我只想要类型键包含“ house”

  • 问题内容: 我正在尝试从的JSON输出解析环境变量。令人讨厌的是,这些环境变量没有作为有用的键值对返回。它们只是x = y字符串的数组。这是输出的相关代码段: 我想将该数组转换为这样的东西: 这样,我可以使用一条命令来获取我关心的值。我不知道如何做到这一点。 选择数据甚至将键和值拆分为单独的元素相对容易。例如,如果使用,我将获得如下数据: 但是,我不知道如何将数据转换为对象分配。似乎应该是或的某种

  • 问题内容: 编码: 对象数据: 问题: 正确显示“ 2009-05-27 16:36:45”。 正确显示“ A5A50000”。 报告“ data.bsID未定义”。 报告“数据[bsID]未定义”。 我不清楚何时/不评估变量。也许我忽略了一些愚蠢的事情,但是我无法在这里解决我的问题。 问题答案: 您可以通过点表示法或括号表示法访问对象属性。 具有动态值时,必须使用后者: 因此,您真正想要的是:

  • 从对象中检索出给定选择器指定的一组属性。 对每个选择器使用 Array.map() ,使用 String.split('.') 来分割每个选择器,并使用 Array.reduce() 来获取它所指示的值。 const select = (from, ...selectors) => [...selectors].map(s => s.split('.').reduce((prev, cur)

  • 问题内容: 我试图找出是否可以使用Hibernate Criteria API进行以下HQL: 其中InitialCount是一个非常简单的,具有字符串和长构造函数的bean: 可能吗? 问题答案: 试试这个 : 其中,公式属性是映射到公式“ substring(name,1,1)”的人员的属性

  • 问题内容: 所以有一个DataFrame说: 我要选择特定列的特定行的数据类型为type的行。 例如,我想选择行,其中列中的数据是。因此它应该打印如下内容: 谁的直观代码如下所示: 显然不起作用! 谢谢,请帮忙! 问题答案: 这有效: