Json jq递归地更新某些元素的值

Json jq递归地更新某些元素的值,json,recursion,edit,jq,Json,Recursion,Edit,Jq,下面JSON数据的目的是使用类型t的所有元素中的src值更新字段dst的值,而不管树中的深度如何,同时保留数据的整个结构 jq有可能做到这一点吗?我的几次尝试归结为以下命令无法达到预期目的: $jq-r'映射值选择。类型?==t |=.dst=.src' jq有可能做到这一点吗 jq是图灵完成的:- 以下是一个简单的解决方案: walk( if type == "object" and .type == "t" then .dst = .src else . end) 如果您的jq没有walk

下面JSON数据的目的是使用类型t的所有元素中的src值更新字段dst的值,而不管树中的深度如何,同时保留数据的整个结构

jq有可能做到这一点吗?我的几次尝试归结为以下命令无法达到预期目的:

$jq-r'映射值选择。类型?==t |=.dst=.src'

jq有可能做到这一点吗

jq是图灵完成的:-

以下是一个简单的解决方案:

walk( if type == "object" and .type == "t" then .dst = .src else . end)
如果您的jq没有walk/1,那么现在可能是升级到jq 1.6的好时机;否则,您可以从web上获取其def,例如通过谷歌搜索:jq def walk

或者。。。 jq有可能做到这一点吗

jq是图灵完成的:-

以下是一个简单的解决方案:

walk( if type == "object" and .type == "t" then .dst = .src else . end)
如果您的jq没有walk/1,那么现在可能是升级到jq 1.6的好时机;否则,您可以从web上获取其def,例如通过谷歌搜索:jq def walk

或者。。。
作品谢谢:工作!谢谢:
reduce paths as $x (.;
    if (getpath($x)|.type? // false) == "t"
    then setpath( $x + ["dst"]; getpath( $x + ["src"] ))
    else . end)