【问题标题】:How do I access JSON child node data in ESQL?如何在 ESQL 中访问 JSON 子节点数据?
【发布时间】:2020-12-12 03:39:37
【问题描述】:

非常感谢您帮我看这个。

我正在使用 IBM ACE V11 软件,在我的服务中,我收到一条 JSON 消息。

我需要通过 ESQL 将此 JSON 消息映射到 SOAP 请求。

请参阅下面的示例消息:

传入的 JSON 消息:

   "journals": [
                    {
                            "journalName": "Plant Species in London",
                            "journalYear": "2016",
                            "journalAuthor": [
                                    {
                                            "name": "Julian Bose",
                                            "subject": "botany"
                                    }
                                    {
                                            "name": "Samantha Adams",
                                            "subject": "biology"
                                    }, 
                            ],
                            "samplePolling": {
                                    "pollingInterval": 120,
                                    "totalAttempts": 10
                            }
                    },
              
            ],
            "supervisorName": "James Smith"
    }

到目前为止,我在 ESQL 中:

期刊名称:

SET OutputRoot.SOAP.Body.ns:submitJournal.ns:journalName = InputRoot.JSON.Data.journals.journalName;  

期刊年份:

SET OutputRoot.SOAP.Body.ns:submitJournal.ns:journalYear = InputRoot.JSON.Data.journals.journalYear;  

对于期刊的作者,我有一个问题。问题是可能有 0 到 3 个或更多作者。 在这种情况下,有 2 个作者。

我如何首先检查是否有作者在场,如果有,有多少人,然后如何将每个作者的详细信息分配给 SOAP。 (所有这些都在 ESQL 中)。

到目前为止,在 ESQL 中我有这个。但我不知道如何获得“n”值。 (n 代表作者人数)。

SET OutputRoot.SOAP.Body.ns:submitJournal.ns:journalAuthorValues[n].ns16:AuthorName = InputRoot.JSON.journals.journalAuthor[n].name; 

非常感谢任何和所有帮助。

【问题讨论】:

    标签: arrays json soap extended-sql


    【解决方案1】:

    对于期刊的作者,我有一个问题。问题是可能有 0 到 3 个或更多作者。在这种情况下,有 2 个作者。

    您需要遍历作者数组,并且假设您需要计算作者的数量。但你不需要。这应该可以正常工作(未经测试,可能包含语法错误)

    FOR refAuthor AS InputRoot.JSON.Data.journals.(JSON.Array)journalAuthor[] DO
        CREATE LASTCHILD OF OutputRoot.SOAP.Body.ns:submitJournal.ns:journalAuthorValues 
           TYPE NAMEVALUE
           IDENTITY ns16:AuthorName
           VALUE FIELDVALUE(refAuthor);
    END FOR
    

    您应该尽量避免在 ESQL 中使用计数循环。 FOR 语句或 SELECT 语句几乎总是更简单更好。

    【讨论】:

      猜你喜欢
      • 2019-10-11
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 2017-03-24
      相关资源
      最近更新 更多