我想要处理的JSON结构如下:
{
"data1": "some data",
"data2": "some data",
"key1": {
"data3": "some data",
"data4": "some data"
},
"key2": {
"data5": "some data"
}
}
我希望jq输出(为了使用eval提取和设置变量):
data1="some data"
data2="some data"
key1_data3="some data"
key1_data4="some data"
key2_data5="some data"
我已尝试使用类似to_entries
的内容来获取.key
和.value
(如here所述),但我没有太多成功解析它。
谢谢你的帮助
答案 0 :(得分:1)
您可以使用Point
函数获取每个标量值的路径,然后使用paths
来检索路径所导致的值。 getpath
记录路径供以后使用。
$p
(根据https://github.com/stedolan/jq/issues/78上的信息回答。)
显示两个关键步骤如何更详细地工作:
$ jq -r 'paths(scalars) as $p | "\($p|join("_"))=\"\(getpath($p))\""' tmp.json
data1="some data"
data2="some data"
key1_data3="some data"
key1_data4="some data"
key2_data5="some data"