我正在使用WSO2 ESB,并尝试将XML有效负载转换为Json.
上面的属性调解器将我的xml转换为json,并且一切正常.
问题出在我的XML有效负载中的子节点上.
当xml是
user1
user2
它被转换为
"users": {
"user": [
"user1", "user2"
]
}
所以我剩下的接收json负载的完整端点期望列表“用户”工作正常.
但是当xml是
user1
转换后的json看起来像这样,
"users": {
"user": "user1"
}
因此,期望“用户”列表的restfull端点未获取列表,而是发送了一个字符串,并且数据类型不匹配导致找不到端点.
如果进一步尝试,
user1
转换后的结果为json,
{
"Data": {
"users": {
"user": {
"@Array": "true",
"$": "user1"
}
}
}
}
我需要的是
{
"Data": {
"users": {
"user": {
[
"user1"
]
}
}
}
}
在杰伊的建议之后,
谢谢周杰伦,
在您输入之后,我尝试了一些操作,但是在某些时候遇到了困难.这就是我正在尝试的
mc.setPayloadJSON(
{
"someIds" : {
"someIdList" : (vUIdLen > 1 ? mc.getProperty("someIdList") : "["+someIdList+"]")
}
});
我正在检查子节点的长度,如果大于1,则使用该节点的较早捕获的值,即[“ abc”,“ pqr”],如果小于或等于1,则为使用单个json值并在“ [” someIdList“]”中构造它,但是没有一个被附加.它给出错误为“脚本引擎返回了执行内联js脚本函数中介的错误”.
如何正确附加此内容.
(vUIdLen > 1 ? mc.getProperty("someIdList") : "["+someIdList+"]")
上面的mc.getProperty(“ someIdList”)的值为[“ abc”,“ pqr”],“ [” someIdList“]”中someIdList的值为abc.
请提出建议.
解决方法:
还有另一种解决方案,无需使用脚本中介程序,您可以添加
处理您的有效载荷的指令.如下;
user1
这将为用户创建json数组.
{"users": {"user": ["user1"]}}
希望这会有所帮助.
标签:wso2esb,xml,json,java
来源: https://codeday.me/bug/20191027/1943370.html