我正在使用DevKit创建一个Mule Anypoint连接器,以连接到内部开发的API。使用@RestCall
注释,我能够在Mule流中成功使用我的连接器,连接器返回以下JSON的字符串:
{
"name": "Bryan",
"email": "bryan@myservice.com",
"uid": "b6fr89dbf6d9156cace5f3c78dc9851d957381ef",
"email_verified": true
}
我知道我可以在Mule流程中实现“JSON to Object”转换器,但我希望连接器能够返回POJO。话虽这么说,我修改了由@RestCall
注释的抽象方法,以返回一个Account对象:
@Processor
@RestCall(
uri="https://api.myservice.com/v2/account",
method=HttpMethod.GET,
contentType = "application/json")
public abstract Account getUserInformation() throws IOException;
仅供参考,以下是我定义帐户的方式:
package org.mule.modules.myservice.model;
import java.io.Serializable;
public class Account implements Serializable {
private static final long serialVersionUID = -1L;
private String name;
private String email;
private String uid;
private boolean emailVerified;
/**
* removed getters and setters for brevity
*/
}
但是,现在我正在尝试返回Account对象,我收到以下错误:
org.mule.api.transformer.TransformerException:找不到将“SimpleDataType {type = java.lang.String,mimeType =' / '}”转换为“SimpleDataType {type”的转换器= org.mule.modules.myservice.model.Account,mimeType =' / '}“。
我看到有一个@Transformer
注释,但缺少有关如何在使用JSON和/或在Mule连接器中的@RestCall
上下文中工作的实现方法的文档。
有人可以提供有关如何将JSON字符串转换为连接器中的Account对象的建议吗?
答案 0 :(得分:0)
在某些时候(不是你指向的地方),你试图将String传递给需要Account的操作。为此注册变压器或在操作之前手动变换。
答案 1 :(得分:0)
我在另一个论坛收到了以下回复,并希望将其传递出去:
为了将DevKit @RestCall与pojos一起使用,您需要定义从String到POJO的变换器。
选中此示例:https://github.com/pablocabrera85/json-place-holder-connector
对于我的具体问题,这是我正在寻找并确实有效的例子。