DataMapper 中介:当输入 JSON 中 属性 的父级为空时映射失败
DataMapper mediator: mapping failed when property's parent in input JSON is null
我正在尝试通过 wso2 esb 集成器中的数据映射器将结果 json 对象映射到 wso2 中的嵌套字段。这是我要实现的目标:
输入json文件进行映射:
{
"name":"John",
"location": {
"id": 1,
"city": "Sydney"
}
}
输出json文件得到:
{
"name":"John",
"city": "Sydney"
}
在输入 Json 变为
之前它工作正常
{
"name":"John",
"location": null
}
}
我需要的结果是
{
"name":"John"
}
但我得到了一个异常,因为位置为空。
ERROR {org.wso2.carbon.mediator.datamapper.DataMapperMediator} - DataMapper mediator : mapping failed Error while reading input stream. Script engine unable to execute the script javax.script.ScriptException: TypeError: Cannot get property "city" of null in <eval> at line number 1
我的问题是如何在 DataMapper 调解器中正确处理该字段在某些条件下不应映射。
如果有人能帮助我,我将不胜感激。
谢谢。
看来我解决了这个问题。
您可以在注册表项目的 .dmc 文件中添加任何条件检查。
if (inputroot.location != null) {
outputroot[0].city = inputroot.location.city;
}
我正在尝试通过 wso2 esb 集成器中的数据映射器将结果 json 对象映射到 wso2 中的嵌套字段。这是我要实现的目标:
输入json文件进行映射:
{
"name":"John",
"location": {
"id": 1,
"city": "Sydney"
}
}
输出json文件得到:
{
"name":"John",
"city": "Sydney"
}
在输入 Json 变为
之前它工作正常{
"name":"John",
"location": null
}
}
我需要的结果是
{
"name":"John"
}
但我得到了一个异常,因为位置为空。
ERROR {org.wso2.carbon.mediator.datamapper.DataMapperMediator} - DataMapper mediator : mapping failed Error while reading input stream. Script engine unable to execute the script javax.script.ScriptException: TypeError: Cannot get property "city" of null in <eval> at line number 1
我的问题是如何在 DataMapper 调解器中正确处理该字段在某些条件下不应映射。
如果有人能帮助我,我将不胜感激。
谢谢。
看来我解决了这个问题。
您可以在注册表项目的 .dmc 文件中添加任何条件检查。
if (inputroot.location != null) {
outputroot[0].city = inputroot.location.city;
}