使用jq在JSON中使用Concat 2字段

时间:2016-06-08 18:56:43

标签: json jq

我正在使用jq来改造我的JSON

JSON字符串:

{"channel": "youtube", "profile_type": "video", "member_key": "hello"}

通缉输出:

{"channel" : "profile_type.youtube"}

我的命令:

echo '{"channel": "youtube", "profile_type": "video", "member_key": "hello"}' | jq -c '. | {channel: .profile_type + "." + .member_key}'

我知道下面的命令连接了字符串。但它的工作原理与上述不同:

echo '{"channel": "youtube", "profile_type": "video", "member_key": "hello"}' | jq -c '.profile_type + "." + .member_key'

如何使用ONLY jq实现我的结果?

2 个答案:

答案 0 :(得分:42)

在字符串连接代码周围使用括号:

echo '{"channel": "youtube", "profile_type": "video", "member_key": "hello"}' | jq '{channel: (.profile_type + "." + .channel)}'

答案 1 :(得分:20)

这是一个使用字符串插值的解决方案,建议使用Jeff

{channel: "\(.profile_type).\(.member_key)"}

e.g。

$ jq '{channel: "\(.profile_type).\(.member_key)"}' <<EOF
> {"channel": "youtube", "profile_type": "video", "member_key": "hello"}
> EOF
{
  "channel": "video.hello"
}

字符串插值使用\(foo)语法(类似于shell $(foo)调用)。
见官方JQ manual