如何在 ESQL 中访问 JSON 个子节点数据?
How do I access JSON child node data in ESQL?
非常感谢你帮我看这个。
我在 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;
非常感谢任何帮助。
For Journal's Author, I have a problem. The problem is that there can be 0 to 3 or more authors. In this case, there are 2 authors.
您需要遍历作者数组,并且假设您需要计算 作者的数量。但你不需要。这应该可以正常工作(未经测试,可能包含语法错误)
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 语句几乎总是更简单更好。
非常感谢你帮我看这个。
我在 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;
非常感谢任何帮助。
For Journal's Author, I have a problem. The problem is that there can be 0 to 3 or more authors. In this case, there are 2 authors.
您需要遍历作者数组,并且假设您需要计算 作者的数量。但你不需要。这应该可以正常工作(未经测试,可能包含语法错误)
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 语句几乎总是更简单更好。