递归存储JSON属性

2024-04-26 23:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在dict或list中存储JSON属性,这是存储它的最佳选择。JSON如下所示:

{
"@BOOLOP": "and",
"@SEQ": "0",
"@TYPE": "0",
"FRAGMENT": {
    "@FUNC1": "value",
    "@FUNC2": "literal",
    "@OP": "<",
    "@PROP1": "PB:FeederSpeed",
    "@PROP2": "0",

},
"BOOLOP": {
    "@BOOLOP": "or",
    "FRAGMENT": [
        {
            "@FUNC1": "value",
            "@FUNC2": "literal",               
            "@OP": "=",
            "@PROP1": "PB:CPProdSelected",
            "@PROP2": "1000",
        }

    ]
}
}

基本上,这个JSON的格式是,is将有一个BOOLOP attibs,然后是一个片段键(depends),后跟n个BOOLOP作为键。你知道吗

我要解决的问题是如何将它存储在一个合适的数据结构中,以便对其执行操作。你知道吗

例如,我需要对FRAGMENT键执行操作,但为此我需要检查它是否满足所有条件。就像@BOOLOPandor一样,由于键中有多个BOOLOP键,因此很难对其执行操作。你知道吗

我从一个bog JSON中提取了我需要的JSON部分,但现在我被困在如何进行递归调用和检查FRAGMENT是否在BOOLOP中。你知道吗

我发布的JSON只是原始文件中的一个示例,可能有n个@BOOLOP,但我在第一个示例就绪后就可以找出这一部分了。你知道吗

编辑

我想把JSON存储在树中 Tree Scenario


Tags: orandjson示例valuedictpbop
1条回答
网友
1楼 · 发布于 2024-04-26 23:25:14

正如您所说,json中有多个BOOLOP键,最好将json的BOOLOP键的所有值附加到一个列表中,这将导致一个字典列表。你知道吗

现在,您可以遍历字典列表并检查每个元素的FRAGMENT键是否在该项中。你知道吗

考虑一下,一个由json的多个BOOLOP键组成的字典示例列表:

a = [{
"@BOOLOP": "or",
"FRAGMENT": [
    {
        "@FUNC1": "value",
        "@FUNC2": "literal",               
        "@OP": "=",
        "@PROP1": "PB:CPProdSelected",
        "@PROP2": "1000",
    }
    ]
},
{
"@BOOLOP": "and",
"FRAGMENT": [
    {
        "@FUNC1": "va1lue",
        "@FUNC2": "lite56ral",               
        "@OP": "=0",
        "@PROP1": "P85B:CPProdSelected",
        "@PROP2": "10000",
    }
    ]
}

现在检查一下这个列表:

for i in a:
    # Check if "@BOOLOP" key is in i, if present then proceed
    if "@BOOLOP" in i:
        if "FRAGMENT" in i:
            # Perform operations on "FRAGMENT" key

相关问题 更多 >