如何使用yq将指定JSON转换为目标YAML格式?
如何使用yq将指定JSON转换为目标YAML格式?
嗨,我来帮你搞定这个yq转换的问题!看起来你想要把输入JSON里的name字段值作为键,values数组里的第一个元素作为对应的值,生成一个简洁的键值对YAML。
先再明确下你的输入和目标:
输入JSON:
{ "name": "Fruit", "values": [ "banana" ] }
目标YAML:
Fruit: banana
你之前尝试的命令语法有点问题,我给你一个正确的yq命令(基于常用的mikefarah/yq版本):
yq '.name as $key | {($key): .values[0]}' input.json
命令解释:
.name as $key:先把JSON里name字段的值(也就是"Fruit")存到变量$key里{($key): .values[0]}:创建一个新的对象,用变量$key作为键(这里用括号包裹是为了让yq识别这是一个动态键),然后取values数组的第一个元素(也就是"banana")作为对应的值
如果你的输入是通过管道传递的(比如从标准输入读取),也可以这么用:
cat input.json | yq '.name as $key | {($key): .values[0]}'
执行这个命令后,就能得到你想要的目标YAML啦。
备注:内容来源于stack exchange,提问作者Amey
相关产品推荐
相关产品推荐

