【问题标题】:Parse logical JSON data in Python在 Python 中解析逻辑 JSON 数据
【发布时间】:2020-08-26 16:34:40
【问题描述】:

我想知道是否存在一些库来解析包含逻辑运算符的 JSON 以将其转换为平面查询字符串。

假设我得到了输入:

{
    "Children":[
       {
          "ID":1,
       },
       {
          "ID":2,
       },
       {
          "Children":[
             {
                "ID":3,
             },
             {
                "ID":4,
             }
          ],
          "Type":"Or"
       }
    ],
    "Type":"And"
 }

我想把它简单地转换成:

(3 Or 4) AND 1 And 2

你会如何在 Python 中做到这一点?

【问题讨论】:

  • 全部大写的 AND 是如何进入的?

标签: python json parsing logic


【解决方案1】:

这取决于您的确切期望是什么;特别是,如果您可以使用多余的括号,这个问题会容易得多。

这是一个错误检查不足的简单递归函数(即,如果 JSON 不完全符合预期,它可能会引发异常):

def json_to_formula(j):
    if 'Children' in j:                                                                
        return '(' + f" {j['Type']} ".join(map(json_to_formula,
                                           j['Children'])) + ')'
    else:
        return str(j['ID'])

【讨论】:

  • 谢谢,但语句中的 f 是什么?
  • @hanshupe:复制和粘贴错误。对不起。最后一分钟,我觉得f这个函数的名字不是很好,但是我复制了旧的函数体而不是固定的。
  • 还有一个 f :)
  • @HansHupe: f"..." 是 Python 3 格式的字符串文字(“f-string”)
  • @HansHupe:酷。但请记住,这只是一个粗略的指南:-)。您需要在添加运算符类型时对其进行调整。 (例如,使用joinAndOr 等运算符效果很好,但对于Not 等一元运算符则不正确。)
猜你喜欢
  • 1970-01-01
  • 2018-05-15
  • 2017-05-23
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多