我在json中有大量数据转储,如下所示:
[{
"recordList" : {
"record" : [{
"Production" : {
"creator" : {
"name" : "A"
}
}
},
{
"Production" : {}
},
{
"Production" : [{
"creator" : {
"name" : "B"
},
"creator" : {
"name" : "C"
}
}]
}]
}
}]
我需要检查记录中是否至少有一个创建者。如果有,我在CSV文件中为该字段提供1,否则为0。
我的代码:
jq -r '.[].recordList.record[]|"\(if ((.Production.creator.name)? // (.Production[]?.creator.name)?) == null or ((.Production.creator.name)?|length // (.Production[]?.creator.name)?|length) == 0 then 0 else 1 end),"' file.json
问题是该领域的生产'当有多个创建者时,它只是一个数组。
我想在这种情况下获得的结果是:
1,
0,
1,
答案 0 :(得分:1)
jq
解决方案:
jq -r '.[].recordList.record[].Production
| "\(if ((type == "array" and .[0].creator.name !="")
or (type == "object" and .creator.name and .creator.name !=""))
then 1 else 0 end),"' file.json
输出:
1,
0,
1,
答案 1 :(得分:0)
简化的jq解决方案:
jq -r '.[].recordList.record[].Production
| ((type == "array" and .[0].creator.name) or .creator.name)
| if . then "1," else "0," end' file.json