大佬教程收集整理的这篇文章主要介绍了使用JQ工具实用程序解析或查看JSON数据字段,其中字段名称的键名称中带有“-”破折号,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
“-”用于jq中的否定。对于带有特殊字符(例如“-”)的键名,不能使用简化的“ .keyname”语法。有多种选择,但最可靠的方法就是使用表单.["KEY
name"]
,当链接时,可以将其缩写为[“ KEY name”],例如.a["b-c"]
的简写形式.a | .["b-c"]
。
如有疑问,请显式使用管道。
有关更多信息,请查阅jq手册和/或https://github.com/stedolan/jq/wiki/FAQ
我有一个JSON数据文件(如下所示),我正在尝试使用jq实用程序查找字段值。
除键名中包含-
短划线字符的字段外,其他方法都可以正常工作。
如何获取(至少使用)下元素的“ field-2 ”,“ field-three 3 ”或“ field-three.url
”值?content.book1``jq
我尝试了以下操作来获取值,但是对于键名中包含短划线的字段,它给了我以下错误-
。我试图反斜杠-
字符,但这也无济于事。
jq: error (at <stdin>:27): null (null) and number (2) cannot be subtracted
jq: 1 compile error
jq: error: three/0 is not defined at <top-level>
jq: error: syntax error,unexpected INVALID_CHARACTER,expecting $end (Unix shell quoting issues?) at <top-level>
jq: error: syntax error,expecting FORMAT or QQSTRING_START (Unix shell quoting issues?) at <top-level>,line 1:
命令:
$ cat /tmp/my.data.json
{
"pages": {
"book1": [
"page1","page2-para1","page3-para1-sentence1","page3-para2-sentence3-word4"
]
},"content": {
"book1": {
"name": "giga","url": "-","field1": "value1","field-2": "value-2","field-three": {
"name": "THIRD","url": "book1/field-three/","short-url": "book1/field-three/chota-chetan"
},"authur": {
"name": "lori CHUCK","displayIndex": 4
},"route": "/in-gc/hindi-chini-bhai-bhai"
}
}
}
$ cat /tmp/my.data.json| jq ".pages"
{
"book1": [
"page1","page3-para2-sentence3-word4"
]
}
$ cat /tmp/my.data.json| jq ".pages.book1[0]"
"page1"
$ cat /tmp/my.data.json| jq ".pages.book1[1]"
"page2-para1"
$ cat /tmp/my.data.json| jq ".content"
{
"book1": {
"name": "giga","field-three": {
"name": "THIRD","url": "book1/field-three/"
},"authur": {
"name": "lori CHUCK","displayIndex": 4
},"route": "/in-gc/hindi-chini-bhai-bhai"
}
}
$ cat /tmp/my.data.json| jq ".content.book1"
{
"name": "giga","field-three": {
"name": "THIRD","url": "book1/field-three/"
},"authur": {
"name": "lori CHUCK","displayIndex": 4
},"route": "/in-gc/hindi-chini-bhai-bhai"
}
$ cat /tmp/my.data.json| jq ".content.book1.name"
"giga"
$ cat /tmp/my.data.json| jq ".content.book1.field1"
"value1"
$ cat /tmp/my.data.json| jq ".content.book1.field-2"
jq: error (at <stdin>:27): null (null) and number (2) cannot be subtracted
$ cat /tmp/my.data.json| jq ".content.book1.field-three"
jq: error: three/0 is not defined at <top-level>,line 1:
.content.book1.field-three
jq: 1 compile error
$ cat /tmp/my.data.json| jq ".content.book1.field-three.url"
jq: error: three/0 is not defined at <top-level>,line 1:
.content.book1.field-three.url
jq: 1 compile error
$ cat /tmp/my.data.json| jq ".content.book1.field\-2"
jq: error: syntax error,expecting $end (Unix shell quoting issues?) at <top-level>,line 1:
.content.book1.field\-2
jq: 1 compile error
$ cat /tmp/my.data.json| jq ".content.book1.field\\-2"
jq: error: syntax error,line 1:
.content.book1.field\-2
jq: 1 compile error
$ cat /tmp/my.data.json| jq ".content.book1.'field-2'"
jq: error: syntax error,line 1:
.content.book1.'field-2'
jq: 1 compile error
$ cat /tmp/my.data.json| jq ".content.book1.authur"
{
"name": "lori CHUCK","displayIndex": 4
}
$ cat /tmp/my.data.json| jq ".content.book1.route"
"/in-gc/hindi-chini-bhai-bhai"
$
PS: 我已经知道了,egrep
所以这不是我想要的。
cat /tmp/my.data.json| jq ".content.book1"|egrep "short-url|field-2"
"field-2": "value-2","short-url": "book1/field-three/chota-chetan"
有人真的在这里做得很好:https://jqplay.org/
以上是大佬教程为你收集整理的使用JQ工具实用程序解析或查看JSON数据字段,其中字段名称的键名称中带有“-”破折号全部内容,希望文章能够帮你解决使用JQ工具实用程序解析或查看JSON数据字段,其中字段名称的键名称中带有“-”破折号所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。