首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过带有特殊字符的jq访问属性?

如何通过带有特殊字符的jq访问属性?
EN

Stack Overflow用户
提问于 2019-10-08 22:34:53
回答 2查看 635关注 0票数 0

给定此json文件wtf.json

代码语言:javascript
运行
复制
{
  "I-am-test-v2": {
    "exist": true
  },
  "works": {
    "exist": true
  }
}

我可以通过以下方式验证它是否具有这些密钥:

代码语言:javascript
运行
复制
$ jq 'keys' wtf.json 
[
  "I-am-test-v2",
  "works"
]

我可以通过以下方式访问works

代码语言:javascript
运行
复制
$ jq .works wtf.json
{
  "exist": true
}

但我不能选择:

代码语言:javascript
运行
复制
$ jq .I-am-test-v2 wtf.json

因为这将导致错误:

代码语言:javascript
运行
复制
jq: error: am/0 is not defined at <top-level>, line 1:
.I-am-test-v2   
jq: error: test/0 is not defined at <top-level>, line 1:
.I-am-test-v2      
jq: error: v2/0 is not defined at <top-level>, line 1:
.I-am-test-v2           
jq: 3 compile errors

我假设它与特殊的char -有关,但我不确定如何引用或转义它,因为这些尝试也都失败了,并出现了相同的错误:

代码语言:javascript
运行
复制
 jq ".I-am-test-v2"  wtf.json 
 jq ."I-am-test-v2"  wtf.json

或者一些不同的错误:

代码语言:javascript
运行
复制
jq ."I\-am\-test\-v2"  wtf.json 
jq: error: syntax error, unexpected INVALID_CHARACTER, expecting $end (Unix shell quoting issues?) at <top-level>, line 1:
.I\-am\-test\-v2  
jq: 1 compile error

我也试过了:

代码语言:javascript
运行
复制
jq .["I-am-test-v2"] wtf.json

我怎么才能拿到钥匙?

EN

回答 2

Stack Overflow用户

发布于 2019-10-09 03:15:19

您的键包含被解释为减法运算符的破折号-

您需要通过双引号将键引起来来告诉jq它是一个字符串。

如果您在命令行中执行此操作,请将您的jq“脚本”括在单引号中,以避免您的shell解释任何特殊字符。

代码语言:javascript
运行
复制
<wtf.json jq '."I-am-test-v2"' 
票数 2
EN

Stack Overflow用户

发布于 2019-10-08 22:34:53

你可以通过以下方式通过适当的引用来访问它:

代码语言:javascript
运行
复制
jq '.["I-am-test-v2"]' wtf.json 
{
  "exist": true
}

然后,它也适用于转义:

代码语言:javascript
运行
复制
jq ".[\"I-am-test-v2\"]" wtf.json 

请注意,您不能反转报价样式:

代码语言:javascript
运行
复制
jq ".['I-am-test-v2']" wtf.json 
jq: error: syntax error, unexpected INVALID_CHARACTER (Unix shell quoting issues?) at <top-level>, line 1:
.['I-am-test-v2']  
jq: 1 compile error
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58288556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档