我想将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的基本格式是,将具有BOOLOP修饰符,然后是FRAGMENT键(取决于),后跟n no。 BOOLOP作为键。
我正在努力解决的问题是如何将其存储在合适的数据结构中,以便于对其执行操作。
例如,我需要对FRAGMENT
键进行操作,但是为此,我需要检查其是否满足所有条件。就像@BOOLOP
是and
或or
一样,并且由于密钥内有多个BOOLOP
键,因此很难对其进行操作。
到目前为止,我是通过从沼泽JSON中提取所需的JSON部分来实现这一目标的,但是现在我陷入了如何进行递归调用并检查FRAGMENT
是否在BOOLOP
内的问题。 / p>
我发布的JSON只是原始文件中的一个示例,可以有n个@BOOLOP,但是我可以在第一个示例到位后弄清楚那部分。
编辑
答案 0 :(得分:0)
正如您所说,在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