我想用jq在我的json上插入新的根元素,我的目标是通过在根元素之前添加一个级别来操作json层次结构:json示例:
{ "option1":true }
我想获得:
{ "root": { "option1":true } }
但当我这么做的时候第一个月它在第一级插入元素,而不是在其前面:
{ "root":null "option1":true }
这可能吗?
xam8gpfp1#
把.放在你想要输入数据的地方,在这种情况下,它就是root字符串作为键的值。
.
root
jq '{"root": .}' <<<'{"option1": true}'
......适当地发射:
{ "root": { "option1": true } }
4urapxun2#
让我为您提供另一种方法,使用基于遍历路径的unix实用程序**jtc**:
jtc
bash $ jtc -u'[^0]' -T'{ "root": {} }' -f file.json bash $ bash $ jtc file.json { "root": { "option1": true } } bash $
更改直接应用到文件中(-f确保)更新:在最新的jtc版本中,模板功能得到了扩展,因此要使同一个示例正常工作,需要对模板进行细微的更改({}需要拼写为{{}}):
-f
{}
{{}}
bash $ jtc -u'[^0]' -T'{"root": {{}} }' file.json { "root": { "option1": true } } bash $
PS〉披露:我是jtc工具的创建者
ymdaylpp3#
普通的echo和cat怎么样?echo "{\"root\":$(cat file.json)}" | jq
echo
cat
echo "{\"root\":$(cat file.json)}" | jq
3条答案
按热度按时间xam8gpfp1#
把
.
放在你想要输入数据的地方,在这种情况下,它就是root
字符串作为键的值。......适当地发射:
4urapxun2#
让我为您提供另一种方法,使用基于遍历路径的unix实用程序**
jtc
**:更改直接应用到文件中(
-f
确保)更新:在最新的
jtc
版本中,模板功能得到了扩展,因此要使同一个示例正常工作,需要对模板进行细微的更改({}
需要拼写为{{}}
):PS〉披露:我是
jtc
工具的创建者ymdaylpp3#
普通的
echo
和cat
怎么样?echo "{\"root\":$(cat file.json)}" | jq