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

jq无法使用带破折号和数字的标记名称

劳夕
2023-03-14
问题内容

我正在使用jq,但json标记中包含“-”使jq无法编译。我无法逃脱它使其工作。这里的命令

    curl -X GET -H "X-AppKey:foo" "foo/v2/_status" | jq '.component-status[]'

我已经在jq的github上阅读了这篇帖子https://github.com/stedolan/jq/issues/202,但我无法使其正常运行。

这是curl的输出

   {
  "status": "ok",
  "hostname": "0b0b495a46db",
  "component-status": [
   {
     "status-code": 200,
     "component": "Service1",
     "status": "OK"
   },
   {
     "status-code": 200,
     "component": "Service2",
     "status": "OK"
   }
  ]
 }

任何想法?


问题答案:

您需要用方括号和双引号引起来:

jq '."component-status"'

使用您给定的输入,它返回:

[
  {
    "status": "OK",
    "component": "Service1",
    "status-code": 200
  },
  {
    "status": "OK",
    "component": "Service2",
    "status-code": 200
  }
]

该JQ手册(开发) - >基本过滤器:

.foo, .foo.bar

最简单的有用过滤器是.foo。当给定JSON对象(又名字典或哈希)作为输入时,它将在键“ foo”处产生值;如果不存在,则返回null。

如果键包含特殊字符,则需要使用双引号将其引起来,例如:."foo$"

从github问题中,如果字段名称带有破折号,则无法选择字段:

目前,该解析为减法。当密钥不符合标识符语法时,您始终可以显式使用字符串。



 类似资料:
  • 问题内容: 我开始学习一些JavaScript,并且了解在命名标识符时不允许使用破折号。但是,在CSS中,ID和类通常使用破折号。 在CSS中使用破折号是否会干扰javascript交互?例如,如果我要使用。我已经尝试了一些使用getElementByID并将破折号作为div ID的名称的示例,并且它可以工作,但是我不确定在所有其他情况下是否都是这种情况。 问题答案: 在ID(或类名,如果您选择的

  • 问题内容: 我有一个JSON数据文件(如下所示),我正在尝试使用jq实用程序查找字段值。 除键名中包含短划线字符的字段外,其他方法都可以正常工作。 如何获取(至少使用)下元素的“ field-2 ”,“ field-three 3 ”或“ field-three.url ”值? 我尝试了以下操作来获取值,但是对于键名中包含短划线的字段,它给了我以下错误。我试图反斜杠字符,但这也无济于事。 命令:

  • 问题内容: 我要备份数据库时出现错误 有什么办法可以用表名(temp_01-01-000001)解决这个问题。 问题答案: 您可以编辑文件/system/database/drivers/mysql/mysql_utility.php的第132行 从: 至:

  • 问题内容: 我有一个名称为dash的现有python模块foo-bar.py 我希望避免更改模块名称,因为该模块是共享的,我将不得不追踪所有使用该模块的位置,以便我的特殊情况能够起作用。 有没有办法加载名称包含通常被禁止的“-”的模块? (我确实知道这不是最佳实践。但是,在这种情况下,我宁愿不要重新设计和测试更多的应用程序。而且,我不认为我的公司老板会赞成我花时间实施这样的变化。) 问题答案: 您

  • 问题内容: 当字符串具有破折号时,我无法从json对象检索值: 如果我尝试引用已解析的文件,它将返回但jsonObj.user_id将返回6789 我没有办法修改外部api调用返回的值,并且试图解析返回的字符串以删除破折号也会破坏传递的url等。救命? 问题答案: 是减法表达式(即)。 要访问包含不能出现在标识符中的字符的键,请使用方括号:

  • 问题内容: 我试图使我的git仓库pip可安装。为此,我正在重组存储库以遵循正确的约定。通过查看其他存储库,我的理解是,我应该将所有源代码放在与存储库名称同名的程序包中。例如,如果调用了我的存储库,则源代码将全部放入一个也称为的包中。 我的存储库中带有连字符以提高可读性:例如。因此,如果我想为其包装一个具有相同名称的包装,则其中也将带有连字符。在本教程中,它对python软件包名称说“不要使用连字