我的json文本如下所示
{
"requires_mfa_code": false,
"key_vault": false,
"id": 100442,
"slug": "spredfns",
"name": "Spredfns",
"**provider**": {
"icons": {
"first_letter": "s",
"color_code": "65c6bb",
"large": "https://assetsedfast_lg.png",
"small": "https://assets.dfast_sm.png"
},
"**capabilities**": {
"has_ou": false,
"has_import": false,
"has_password_reset": false,
"has_provision": false,
"has_saml": false,
"has_sync": false,
"unsupported_browsers": [],
"services": "authenticatab
我无法解析类别文本标题,如功能和提供程序。我只能获取requires_mfa_code和id和name.My代码如下:
curl https://www.example.com/api/v2/organizations/78762/installations?page=1 > test.txt; cat test.txt | jq '.[] | "\(.id) \(.name)" '
有人可以帮忙吗?我想获得 provider / color_code
目标低于
id slug provider color_code
100442 spredfns 65c6bb
答案 0 :(得分:0)
问题的标题提到了CSV,所以我首先要说明如何使用@csv生成有效的CSV。
使用您的输入(更正为使其成为有效的JSON),调用:
jq -r '[.id, .slug, ."**provider**"."icons"."color_code" ] | @csv'
产生
100442,"spredfns","65c6bb"
如果您不想在输出中包含引号,那么您可以使用字符串插值,就像在原始帖子中一样。如果你的jq支持@tsv
,那么另一种方法是使用它代替@csv;输出将是:
100442 spredfns 65c6bb
可以像这样包含标题:
(["id", "slug", "provider color_code"],
[.id, .slug, ."**provider**"."icons"."color_code" ])
| @tsv
在这种情况下,输出将是:
id slug provider color_code
100442 spredfns 65c6bb
如果您使用的jq版本不支持."foo"
语法,请改用主.["foo"]
语法,记住创建管道:
[.id, .slug, (.["**provider**"] | .["icons"] | .["color_code"]) ]