我需要过滤一些JSON,以便仅将具有www
数组中没有keysstoremove
键的对象保留在最终输出中。
我的代码:
import pyjq, json
keysstoremove = ["KLLIE2D", "FLLIE2D", "SLLIE2D", "ELLIE2D"]
infile = json.load(open('./test.json'))
json_object = pyjq.all('.configurations[] | {www, en_key} | select(.en_key != null)', infile)
示例输出(不正确):
[{
"www": "BLLIE2D",
"en_key": "hashAAAAB3NzaC1y"
},
{
"www": "KLLIE2D",
"en_key": "hashAAAAB3NwCXr57"
},
{
"www": "JLLIE2D",
"en_key": "hashnAAAt8zlnwg1Pj"
},
{
"www": "FLLIE2D",
"en_key": "hashAAAAB3NzaC1ycA"
{
"www": "ELLIE2D",
"en_key": "hashAAAAB3Nz0Md9sdvs"
},
{
"www": "SLLIE2D",
"en_key": "hashAAAAB3NzaC1yc2EAJ"
}]
预期输出:
[{
"www": "BLLIE2D",
"en_key": "hashAAAAB3NzaC1y"
},
{
"www": "JLLIE2D",
"en_key": "hashnAAAt8zlnwg1Pj"
}]
答案 0 :(得分:0)
您的jq查询甚至没有提到keysstoremove
。一种可能性是使用如下的jq查询:
def keysstoremove:
["KLLIE2D", "FLLIE2D", "SLLIE2D", "ELLIE2D"];
.configurations[]
| .en_key as $k
| select( keysstoremove | index($k) | not)
| {www, en_key}
在使用诸如pyjq之类的包装器时遇到困难时,通常最简单的方法是使用jq命令行解释器来检查jq查询是否正确,该解释器通常可在主要操作系统上使用。