鉴于此输入:
[
{
"Id": "cb94e7a42732b598ad18a8f27454a886c1aa8bbba6167646d8f064cd86191e2b",
"Names": [
"condescending_jones",
"loving_hoover"
]
},
{
"Id": "186db739b7509eb0114a09e14bcd16bf637019860d23c4fc20e98cbe068b55aa",
"Names": [
"foo_data"
]
},
{
"Id": "a4b7e6f5752d8dcb906a5901f7ab82e403b9dff4eaaeebea767a04bac4aada19",
"Names": [
"jovial_wozniak"
]
},
{
"Id": "76b71c496556912012c20dc3cbd37a54a1f05bffad3d5e92466900a003fbb623",
"Names": [
"bar_data"
]
}
]
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用jq构造一个过滤器,该过滤器返回内部数组中不包含"data"的所有Ids 对象,输出为换行符.对于上面的数据,我想要的输出是Names
cb94e7a42732b598ad18a8f27454a886c1aa8bbba6167646d8f064cd86191e2b
a4b7e6f5752d8dcb906a5901f7ab82e403b9dff4eaaeebea767a04bac4aada19
Run Code Online (Sandbox Code Playgroud)
我想我跟这个有点接近:
(. - select(.Names[] contains("data"))) | .[] .Id
Run Code Online (Sandbox Code Playgroud)
但select过滤器不正确,它不编译(get error: syntax error, unexpected IDENT).
我有以下json文件:
{
"FOO": {
"name": "Donald",
"location": "Stockholm"
},
"BAR": {
"name": "Walt",
"location": "Stockholm"
},
"BAZ": {
"name": "Jack",
"location": "Whereever"
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用jq并希望得到'location'为'Stockholm'的对象的"名称"元素.
我知道我可以得到所有的名字
cat json | jq .[] | jq ."name"
"Jack"
"Walt"
"Donald"
Run Code Online (Sandbox Code Playgroud)
但考虑到子键的值(这里"location" : "Stockholm"),我无法弄清楚如何只打印某些对象.
我有这个Json
{
"users": [
{
"first": "Stevie",
"last": "Wonder"
},
{
"first": "Michael",
"last": "Jackson"
}
]
}
Run Code Online (Sandbox Code Playgroud)
使用jq我想连续显示名字和姓氏.像这样 -
Stevie Wonder
Michael Jackson
Run Code Online (Sandbox Code Playgroud)
这是我走了多远 -
jq '.users[].first, .users[].last'
Run Code Online (Sandbox Code Playgroud)
但它显示出来
"Stevie"
"Michael"
"Wonder"
"Jackson"
Run Code Online (Sandbox Code Playgroud)
请注意以下事项 -
我似乎无法jq在shell管道中"正常"行事.例如:
$ curl -s https://api.github.com/users/octocat/repos | jq | cat
Run Code Online (Sandbox Code Playgroud)
结果在jq简单的打印出它的帮助文本*.如果我尝试将jq输出重定向到文件,会发生同样的事情:
$ curl -s https://api.github.com/users/octocat/repos | jq > /tmp/stuff.json
Run Code Online (Sandbox Code Playgroud)
jq如果它确定它不是从tty运行的话,是故意拯救?如何防止此行为以便我可以jq在管道中使用?
我JSON从curl命令得到这种回复:
[
{
"cid": 49,
"pyn": "yi4",
"hans": "?",
"hant": "?",
"tid": 68,
"l10n": "cent million",
"pid": 1,
"pos": "num",
"pos_txt": ""
},
{
"cid": 50,
"pyn": "yi4",
"hans": "?",
"hant": "?",
"tid": 69,
"l10n": "100 millions",
"pid": 1,
"pos": "num",
"pos_txt": ""
}
]
Run Code Online (Sandbox Code Playgroud)
如何2使用Bash或命令行(例如underscore)计算数组中的项目数(此处)?
我在shell脚本中使用jq工具(jq-json-processor)来解析json.
我有2个json文件,想要将它们合并为一个唯一的文件
这里是文件的内容:
文件1
{
"value1": 200,
"timestamp": 1382461861,
"value": {
"aaa": {
"value1": "v1",
"value2": "v2"
},
"bbb": {
"value1": "v1",
"value2": "v2"
},
"ccc": {
"value1": "v1",
"value2": "v2"
}
}
}
Run Code Online (Sandbox Code Playgroud)
文件2
{
"status": 200,
"timestamp": 1382461861,
"value": {
"aaa": {
"value3": "v3",
"value4": 4
},
"bbb": {
"value3": "v3"
},
"ddd": {
"value3": "v3",
"value4": 4
}
}
}
Run Code Online (Sandbox Code Playgroud)
预期结果
{
"value": {
"aaa": {
"value1": "v1",
"value2": "v2",
"value3": "v3",
"value4": 4 …Run Code Online (Sandbox Code Playgroud) curl http://testhost.test.com:8080/application/app/version | jq '.version' | jq '.[]'
上面的命令只输出如下值:
"madireddy@test.com"
"2323"
"test"
"02-03-2014-13:41"
"application"
Run Code Online (Sandbox Code Playgroud)
如何获得密钥名称,如下所示:
email
versionID
context
date
versionName
Run Code Online (Sandbox Code Playgroud) 我使用JQ解析一个JSON文件,如这里.但是,字符串值的结果包含预期的"双引号",如下所示:
$ cat json.txt | jq '.name'
"Google"
Run Code Online (Sandbox Code Playgroud)
如何将此管道传输到另一个命令以删除""?所以我明白了
$ cat json.txt | jq '.name' | some_other_command
Google
Run Code Online (Sandbox Code Playgroud)
我some_other_command可以用什么?
使用jq,如何将浅层对象数组的任意JSON编码转换为CSV?
这个网站上有大量的问答,涵盖了对字段进行硬编码的特定数据模型,但是这个问题的答案应该适用于任何JSON,唯一的限制是它是一个具有标量属性的对象数组(没有深/复/子对象,扁平化这些是另一个问题).结果应包含一个标题行,给出字段名称.将优先考虑保留第一个对象的字段顺序的答案,但这不是必需的.结果可以用双引号括起所有单元格,或者只包含那些需要引用的单元格(例如'a,b').
输入:
[
{"code": "NSW", "name": "New South Wales", "level":"state", "country": "AU"},
{"code": "AB", "name": "Alberta", "level":"province", "country": "CA"},
{"code": "ABD", "name": "Aberdeenshire", "level":"council area", "country": "GB"},
{"code": "AK", "name": "Alaska", "level":"state", "country": "US"}
]
Run Code Online (Sandbox Code Playgroud)
可能的输出:
code,name,level,country
NSW,New South Wales,state,AU
AB,Alberta,province,CA
ABD,Aberdeenshire,council area,GB
AK,Alaska,state,US
Run Code Online (Sandbox Code Playgroud)
可能的输出:
"code","name","level","country"
"NSW","New South Wales","state","AU"
"AB","Alberta","province","CA"
"ABD","Aberdeenshire","council area","GB"
"AK","Alaska","state","US"
Run Code Online (Sandbox Code Playgroud)输入:
[
{"name": "bang", "value": "!", "level": 0},
{"name": "letters", "value": "a,b,c", "level": 0},
{"name": "letters", "value": "x,y,z", "level": 1},
{"name": "bang", "value": …Run Code Online (Sandbox Code Playgroud)我有一个json,目前使用select来获取只匹配一个条件的数据,我需要根据更多条件进行过滤.
例如:
.[] | select((.processedBarsVolume <= 5) && .processedBars > 0)
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?