繁体   English   中英

在 REST API 调用之后,我有以下格式的键/值对,我只需要提取与键对应的特定值

[英]After REST API call ,i have key/value pair in the below format ,I Need to extract just the specific value corresponding to the key

执行ID

工作设计 输出2 输出1

选项 1:如果我使用 TALEND 作业,我会出于某种原因将 JSON 结果与反斜杠一起存储在 JSON 文件中(这是无法解析的)

{"read":[{"Body":"{\"items\":[{\"executionId\":\"a0613a31-d16d-4c4d-9279-4564a86cdd44\",\"startTimestamp\":\"2021-09-15T22:30:26.854Z\",\"triggerTimestamp\":\"2021-09-15T22:30:27.209Z\",\"userId\":\"user1\",\"status\":\"dispatching\",\"runtime{\"type\":\"REMOTE_ENGINE_CLUSTER\"},\"executionStatus\":\"DISPATCHING_FLOW\"},{\"executionId\":\"49a56eb1-f3c7-4f26-9554-8fa88acde38b\",\"startTimestamp\":\"2021-09-15T22:29:15.999Z\",\"triggerTimestamp\":\"2021-09-15T22:29:16.447Z\",\"userId\":\"user1\",\"executionType\":\"MANUAL\",\"status\":\"dispatching\",\"runtime\":{\"type\":\"REMOTE_ENGINE_CLUSTER\"},\"executionStatus\":\"DISPATCHING_FLOW\"}],\"limit\":100,\"offset\":0,\"total\":2}","ERROR_CODE":null}]}

选项 2:使用 WEB URL:在 REST API 调用后,我有 JSON 结果,如:

身体context.statusbody

{
    "items": [{
            "executionId": "4f679c12-d8d7-4dd7-89d5-507a94503988",
            "startTimestamp": "2021-09-14T19:05:01.854Z",
            "triggerTimestamp": "2021-09-14T19:05:02.385Z",
            "userId": "user1",
            "taskId": "60b7f6d31c6e394de0163d35",
            "status": "dispatching",
            "runtime": {
                "type": "REMOTE_ENGINE_CLUSTER"
            },
            "executionStatus": "DISPATCHING_FLOW"
        },
        {
            "executionId": "4f40b04c-1ac1-42ea-9a36-7c25b1b17fe8",
            "startTimestamp": "2021-09-14T19:00:24.769Z",
            "triggerTimestamp": "2021-09-14T19:00:25.122Z",
            "userId": "user1",
            "taskId": "60b7f6d31c6e394de0163d35",
            "executionType": "SCHEDULED",
            "status": "dispatching",
            "runtime": {
                "type": "REMOTE_ENGINE_CLUSTER"
            },
            "executionStatus": "DISPATCHING_FLOW"
        }
    ],
    "limit": 100,
    "offset": 0,
    "total": 2
}

由此我只需要为每次迭代提取 executionID 和 triggerTimestamp 并存储在一个全局变量中

在我变灰的 tjava3 中,我将全局变量用作:

  context.testexecutionID=((String)globalMap.get("executionID"));
  context.triggerTimestamp=((String)globalMap.get("triggerTimestamp"));
     context.executionID=context.testexecutionID.substring(5, context.testexecutionID.lastIndexOf("\"")-3);

@sarah 基于您在编辑中添加的有效 JSON。

我建议您在 tRest 之后添加以添加 tExtractJSONFields 组件 paremetred :

在此处输入图片说明

工作设计应该在第一次测试中:

tRest -> tExtractJSONFields -> tLogRow 。

如果萃取良好。 第二次测试您必须查看我之前的第一个答案才能获得全局变量。

好的,Json i 用于您的案例来满足您的要求:

请注意,您的 Json 无效

{
    "items": [{
        "executionId": "6e5fa777-9ede-42b9-b862-03b4b1b12375",
        "startTimestamp": "2021-09-15T05:59:40.599Z",
        "triggerTimestamp": "2021-09-15T05:59:41.006Z",
        "userId": "user"
    }],
    "limit ": 100,
    "offset ": 0,
    "total ": 2
}

在不知道你的工作设计的情况下,我只是得到了张贴在这里的输出。

我的工作设计是这样的:

在此处输入图片说明

重要的 ! :你的 tFileInputJson 应该是这样的,以获得 2 个字段

如果您想使用 tExtractJSONFields ,请使用相同的配置。

在此处输入图片说明

存储您的全局变量:

在此处输入图片说明

获得 globalVariables 的简单方法是使用 tfixedFlowInput :

在此处输入图片说明

输出 :

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM