我正在尝试使用一个数组过滤一个json,这个数组可以有多个对象,但也可以是空的。
输入:
如果一切正常,它就不是空的,并且我的customerKey位于第一级:
"mainArray": [
{
"errorsArray": [],
"errorCode": "0",
"customerKey": "UUID-1"
},
{
"errorsArray": [],
"errorCode": "0",
"customerKey": "UUID-2"
}
]
但是当出现错误时,我会把键放到一个嵌套的错误数组中:
"mainArray": [
{
"errorsArray": [
{
"customerKey": "UUID-1",
"description": "error desc",
"errorCode": "1"
},
{
"customerKey": "UUID-1",
"description": "error desc",
"errorCode": "2"
}
],
"errorCode": "1"
},
{
"errorsArray": [],
"errorCode": "0",
"customerKey": "UUID-2"
}
]
输出:
我想过滤我的“mainField”,只留下UUID-1的客户。
一切正常时的预期输出:
"mainArray": [
{
"errorsArray": [],
"errorCode": "0",
"customerKey": "UUID-1"
}
]
出现错误时的预期输出:但是当出现错误时,我会把键放到一个嵌套的错误数组中:
"mainArray": [
{
"errorsArray": [
{
"customerKey": "UUID-1",
"description": "error desc",
"errorCode": "1"
},
{
"customerKey": "UUID-1",
"description": "error desc",
"errorCode": "2"
}
],
"errorCode": "1"
}
]
其他信息:
我提到在errorsArray中,除了获得不同的customerKey之外,我不做任何事情。我还提到,此时更改此输入不是一个选项。
谢谢你:)
目前为止我尝试的是:
下面的技术显然只适用于没有错误的情况:
filtered = [obj for obj in mainArray if (obj.get('customerKey',{}) == 'UUID-1')] if len(mainArray ) != 0 else [{}]
当出现错误时,它不起作用,因为customerKey仅位于内部数组中。
1条答案
按热度按时间vfh0ocws1#
您可以使用嵌套列表解析来实现此目的:
if in 'x'解析检查'y'(错误)列表是否不为空。2 'y'列表检查UUID。