使用 jq 迭代 json 数据
using jq to iterate json data
我有一些 json 输入数据 我想将变量值提取到可以粘贴到脚本中的内容中
输入样本:
{
"menu": {
"props": [{
"name": "foo1",
"model": "bar1"
}, {
"name": "foo2",
"model": "bar2"
}, {
"name": "foo3",
"model": "bar3"
}, {
"name": "foo4",
"model": "bar4"
}, {
"name": "foo5",
"model": "bar5"
}]
}
}
期望输出:
AddMenuItem(menu, "bar1", "foo1");
AddMenuItem(menu, "bar2", "foo2");
AddMenuItem(menu, "bar3", "foo3");
...etc
像这样的东西会起作用:
$ jq -r '.menu.props[] | "AddMenuItem(menu, \"\(.model)\", \"\(.name)\")"' file.txt
AddMenuItem(menu, "bar1", "foo1")
AddMenuItem(menu, "bar2", "foo2")
AddMenuItem(menu, "bar3", "foo3")
AddMenuItem(menu, "bar4", "foo4")
AddMenuItem(menu, "bar5", "foo5")
-r
打印原始输出(未 JSON 编码)。
用 []
展开 props
数组并为所述数组中的每个元素打印字符串 "AddMenu..."
。
也可以使用 ...props | map("AddMenu...")[]
,这可能更直观。
\(...)
启用 (
和 )
之间的字符串插值。
我有一些 json 输入数据 我想将变量值提取到可以粘贴到脚本中的内容中
输入样本:
{
"menu": {
"props": [{
"name": "foo1",
"model": "bar1"
}, {
"name": "foo2",
"model": "bar2"
}, {
"name": "foo3",
"model": "bar3"
}, {
"name": "foo4",
"model": "bar4"
}, {
"name": "foo5",
"model": "bar5"
}]
}
}
期望输出:
AddMenuItem(menu, "bar1", "foo1");
AddMenuItem(menu, "bar2", "foo2");
AddMenuItem(menu, "bar3", "foo3");
...etc
像这样的东西会起作用:
$ jq -r '.menu.props[] | "AddMenuItem(menu, \"\(.model)\", \"\(.name)\")"' file.txt
AddMenuItem(menu, "bar1", "foo1")
AddMenuItem(menu, "bar2", "foo2")
AddMenuItem(menu, "bar3", "foo3")
AddMenuItem(menu, "bar4", "foo4")
AddMenuItem(menu, "bar5", "foo5")
-r
打印原始输出(未 JSON 编码)。
用 []
展开 props
数组并为所述数组中的每个元素打印字符串 "AddMenu..."
。
也可以使用 ...props | map("AddMenu...")[]
,这可能更直观。
\(...)
启用 (
和 )
之间的字符串插值。