如何解决如何在ESQL中访问JSON子节点数据?
非常感谢您帮我看看。
我正在使用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;
对于Journal的作者,我有问题。问题是可能有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;
我们将不胜感激。
解决方法
对于Journal的作者,我有问题。问题是可能有0到3个或更多作者。在这种情况下,有2位作者。
您需要遍历作者数组,并且假设您需要 count 个作者数量。但是您不需要。这应该可以正常工作(未经测试,可能包含语法错误)
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语句几乎总是更简单,更好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。