【发布时间】:2014-10-14 09:49:23
【问题描述】:
我正在尝试在 bash 中生成一个 json 文件。我安装了jq,希望它能帮助我生成和附加json。
比如我想生成一个这样格式的json:
{
"Project": [
{
"projectName": {
"branch": [
{
"branchName": [
"path"
]
}
],
"tag": [
{
"tagName": [
"path"
]
}
]
}
}
]
}
虽然可以这样,但使用以下过滤器
.Project=.Project+.Project+
[{"projectName" : {"branch" : (.branch+[{"branchName":(.tagName+["path"])}]),
"tag": (.tag+[{"tagName":(.tagName+["path"])}]) }}]
当我想在同一个项目和名称中创建另一个条目时,它会创建一个全新的条目,如果它是一个新项目, 结果是:
{
"Project": [
{
"projectName": {
"branch": [
{
"branchName": [
"path"
]
}
],
"tag": [
{
"tagName": [
"path"
]
}
]
}
},
{
"projectName": {
"branch": [
{
"branchName": [
"path"
]
}
],
"tag": [
{
"tagName": [
"path"
]
}
]
}
},
{
"projectName": {
"branch": [
{
"branchName": [
"path2"
]
}
],
"tag": [
{
"tagName": [
"path2"
]
}
]
}
}
]
}
但我想拥有
{
"Project": [
{
"projectName": {
"branch": [
{
"branchName": [
"path",
"path2"
]
}
],
"tag": [
{
"tagName": [
"path",
"path2"
]
}
]
}
}
]
}
jq/bash 有办法吗?
【问题讨论】:
-
给出错误结果的 jq 字符串是什么?
-
你从什么生成 json?目录结构?一个文本文件?其他的json?从无到有?什么?
-
@Etan,我正在使用的 jq 过滤器。 Projectname、BranchName、tagName 是变量,我通常应该具有相同的值,每次执行时路径会有所不同。实际上,这是由在 mercurial repo 上执行 doxygen 文件的脚本运行的。所以我