Arrays 将json数组转换为字符列表esql
我有以下json语法Arrays 将json数组转换为字符列表esql,arrays,json,ibm-integration-bus,cardinality,extended-sql,Arrays,Json,Ibm Integration Bus,Cardinality,Extended Sql,我有以下json语法 { "PRINTER": "P123", "ID_INPUT": "111046", "IDCOUNT": 3, "TIME": "", "IDLIST": [{ID_IN": "111046"},{"ID_IN": "111047"}, {
{
"PRINTER": "P123",
"ID_INPUT": "111046",
"IDCOUNT": 3,
"TIME": "",
"IDLIST": [{ID_IN": "111046"},{"ID_IN": "111047"}, {"ID_IN": "111048"}]
}
我的目标是迭代IDLIST并在esql中创建一个类似“111046;111047;111048”的字符串。但是我在处理json时遇到了问题。我试过:
DECLARE c INTEGER; -- cardinality
DECLARE i INTEGER 0; -- index
DECLARE idlist CHARACTER '';
-- find cardinality
SET c = CARDINALITY(InputRoot.JSON.Data.IDLIST[]); -- Q1
-- iterate over IDLIST
WHILE i < c DO
-- build new data structure
SET idlist = idlist || InputRoot.JSON.Data.IDLIST[i] || ';'; -- Q2
SET i = i + 1;
END WHILE;
声明c整数;--基数
声明i整数0;--指数
声明空闲字符“”;
--找到基数
SET c=CARDINALITY(InputRoot.JSON.Data.IDLIST[]);--Q1
--在IDLIST上迭代
当我做的时候
--建立新的数据结构
SET idlist=idlist | | InputRoot.JSON.Data.idlist[i]| |‘’;--问题2
设置i=i+1;
结束时;
- 问题1:有可能这样得到基数吗
- 问题2:我可以这样写我的数据结构吗
- 问题3:有没有更好的方法
DECLARE idlist CHAR '';
FOR PTR AS InputRoot.JSON.Data.IDLIST.Item[] DO
SET idlist = idlist || PTR.ID_IN || ';' ;
END FOR;
SET idlist = TRIM(TRAILING ';' FROM idlist); --This is to get rid of the last ; in the string
不要使用标签-使用、和中的一个。我相信您使用的不是“嵌入式sql”;不过,我不确定您使用的是什么,它是扩展的sql标记,即在一个名为IBM集成总线(IIB)的工具中使用的esql。我已经更新了问题的正确标签,一旦批准,应该可以看到。@user2663557-如果您能告诉我上面的答案是否有用,我会的-希望我今天可以测试一下。非常感谢。