jq:从平面键创建JSON对象

jq:从平面键创建JSON对象,json,object,key,jq,Json,Object,Key,Jq,如何使用jq从对象中的平面键创建嵌套JSON对象 我的意见是 { foo.bar:lorem, foo.baz:ipsum, 巴福:多洛 } 输出应该如下所示 { 傅:{ 酒吧:洛伦, 巴兹:同侧 }, 酒吧:{ 福:多洛 } } 一种方法是使用reduce和setpath从原始对象的关键点构建新对象: $jq'。as$orig |将密钥[]减少为$key{};设置路径$key |拆分$orig[$key]'input.json { 酒吧:{ 福:多洛 }, 傅:{ 酒吧:洛伦, 巴兹:同侧 }

如何使用jq从对象中的平面键创建嵌套JSON对象

我的意见是

{ foo.bar:lorem, foo.baz:ipsum, 巴福:多洛 } 输出应该如下所示

{ 傅:{ 酒吧:洛伦, 巴兹:同侧 }, 酒吧:{ 福:多洛 } } 一种方法是使用reduce和setpath从原始对象的关键点构建新对象:

$jq'。as$orig |将密钥[]减少为$key{};设置路径$key |拆分$orig[$key]'input.json { 酒吧:{ 福:多洛 }, 傅:{ 酒吧:洛伦, 巴兹:同侧 } } 工作原理

reduce在其主体中为每个键调用一次表达式。第一次。设置为空对象,每次都是上一次调用的主体返回的内容。每次调用都会将当前密钥拆分为一个数组,setpath将其用作要设置的路径。使用原始对象中的相应值

因此,每次逐步建立一个元素的结果:

={}和$key=foo.bar->{foo:{bar:lorem}}和$key=foo.baz等等。

一种方法使用reduce和setpath从原始对象的键构建新对象:

$jq'。as$orig |将密钥[]减少为$key{};设置路径$key |拆分$orig[$key]'input.json { 酒吧:{ 福:多洛 }, 傅:{ 酒吧:洛伦, 巴兹:同侧 } } 工作原理

reduce在其主体中为每个键调用一次表达式。第一次。设置为空对象,每次都是上一次调用的主体返回的内容。每次调用都会将当前密钥拆分为一个数组,setpath将其用作要设置的路径。使用原始对象中的相应值

因此,每次逐步建立一个元素的结果:

={}和$key=foo.bar->{foo:{bar:lorem}}和$key=foo.baz等等