Учитывая следующее xample.json
;jq: вложенный объект, извлекает идентификатор верхнего уровня и поднимает значение из внутреннего объекта
[
{
"id": 12345678,
"stuff": { "book": "shelf", "hook": "line", "took": "off", "info-spec": 12 },
"votes": 23
},
{
"id": 12345679,
"stuff": { "book": "maker", "hook": "sinker", "took": "pisin", "info-spec": 23 },
"votes": 1
}
]
я могу извлечь id
и votes
легко:
$ jq '.[] | { id, votes }' xample.json
{
"votes": 23,
"id": 12345678
}
{
"votes": 1,
"id": 12345679
}
Но что бы запрос выглядеть, чтобы извлечь id
и stuff.info-spec
? Очевидная (для меня) синтаксис не работает вообще:
$ jq '.[] | { id, stuff.info-spec }' xample.json
error: syntax error, unexpected '.', expecting '}'
.[] | { id, stuff.info-spec }
^
1 compile error
Я попытался stuff[info-spec]
и stuff["info-spec"]
как хорошо, но, ну, я, кажется, не имеют ни малейшего представления, как это должно быть сделано.
Черта в ключевом ключе, похоже, еще более осложняет ситуацию, но мое ограниченное понимание заключается в том, что я могу обойти это с помощью двойных кавычек.
$ sed 's/votes/vo-tes/g' xample.json | jq '.[] | { id, "vo-tes" }'
дает ожидаемый выход (т.
я могу извлечь book
:
$ jq '.[] | .stuff.book' xample.json
, но опять-таки не могу понять, синтаксис для id
и book
; но я не могу извлечь info-spec
с тем же синтаксисом:
$ jq '.[] | .stuff."info-spec"' xample.json
error: syntax error, unexpected QQSTRING_START, expecting IDENT
.[] | .stuff."info-spec"
^
1 compile error
Если я вынимаю кавычки, то сообщение об ошибке (предсказуемо) различны:
$ jq '.[] | .stuff.info-spec' xample.json
error: spec is not defined
.[] | .stuff.info-spec
^^^^
1 compile error
Но эй, это работает:
$ jq '.[] | .stuff["info-spec"] ' xample.json
12
23
Мой желаемый результат для этого примера, тогда,
{
"info-spec": 12,
"id": 12345678
}
{
"info-spec": 23,
"id": 12345679
}
Я посмотрел на FAQ и jq
Cookbook, но я не могу найти ничего о синтаксисе для «подъема» предмета внутри объекта внутри другого объекта.
Я все еще на 1.2, кажется. – tripleee
yup, только что отредактированный: https://github.com/stedolan/jq/issues/38 –