我可以运行json对象中作为字符串存储的java代码吗?

6jjcrrmo  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(226)

我有一个程序,它获取记录集合和一系列json对象,这些对象表示在java中按顺序对这些数据执行的操作或“步骤”。我想在步骤中添加一个“条件”字段,如果满足所述条件,后端可以使用该字段跳过步骤。
以下是json步骤之一的示例:

//previous steps...
,{
      "closureType": "FILTER",
      "configParams": {
        "usingDataset": "DATASET1",
        "condition": {
          "operation": "OR",
          "conditions": [
            {
              "field": "eve",
              "value": 0,
              "operation": "EQ"
            },
            {
              "field": "eve",
              "value": 0,
              "operation": "LT"
            }
          ]
        },
        "resultingDataset": "DATASET2"
      }
    },
//subsequent steps

此步骤告诉后端从dataset1中删除所有与筛选条件不匹配的记录,并存储dataset2中剩余的内容,然后通过后续步骤对这些记录执行操作。
但是,我想添加一个条件,该条件应该在步骤的其余部分之前执行,以确定过滤器是否实际发生。

{
      "closureType": "FILTER",
      "condition": "[Java If...Then code]"
      "configParams": {
        "usingDataset": "DATASET1",
        "condition": {
          "operation": "OR",
          "conditions": [
            {
              "field": "eve",
              "value": 0,
              "operation": "EQ"
            },
            {
              "field": "eve",
              "value": 0,
              "operation": "LT"
            }
          ]
        },
        "resultingDataset": "DATASET2"
      }
    },

作为一个更具体的例子:

{
      "closureType": "FILTER",
      "condition": "if(transformContext.datasets.get(DATASET1).hasField(fieldname)){break;}"
      "configParams": {
        "usingDataset": "DATASET1",
        "condition": {
          "operation": "OR",
          "conditions": [
            {
              "field": "eve",
              "value": 0,
              "operation": "EQ"
            },
            {
              "field": "eve",
              "value": 0,
              "operation": "LT"
            }
          ]
        },
        "resultingDataset": "DATASET2"
      }
    },

如果dataset1中的datarecords有一个名为“fieldname”的字段,则会阻止该步骤运行。
然而,据我所知,这在java中是不可能的,因为代码必须在运行之前编译。我看到有人提到使用groovy,但我对它完全不熟悉,所以不确定从哪里开始。有没有办法做到这一点或其他建议?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题