我想用jq在我的json上插入新的根元素,我的目标是通过在根1之前添加一个级别来操纵json层次结构:
json示例:
{
"option1":true
}
我想获得:
{
"root":
{
"option1":true
}
}
但是当我这样做时:
$ echo '{"option1":true}' | jq -r '. + {"root"}'
它将元素插入到第一级,而不是在其之前:
{
"root":null
"option1":true
}
有可能吗?
答案 0 :(得分:4)
将t.string "link_file_id"
t.string "link_file_content_type"
t.string "link_file_filename"
t.string "link_file_size"
放在要输入数据的位置。在这种情况下,这就是.
字符串是键的值。
root
...正确发射:
jq '{"root": .}' <<<'{"option1": true}'
答案 1 :(得分:2)
让我为您提供一种替代方法,使用基于步行路径的Unix实用程序 DataSearch :
bash $ jtc -u'[^0]' -T'{ "root": {} }' -f file.json
bash $
bash $ jtc file.json
{
"root": {
"option1": true
}
}
bash $
直接应用到文件中的更改(-f
确保做到这一点)
PS>披露:我是jtc
工具的创建者