Mule json到java组件
我有这个json对象Mule json到java组件,mule,Mule,我有这个json对象 data = { "amount": "70", "cardNumber": "4222222222222", "expiryDate": "1215", "currency": "Currency.ISK.alpha" } 我想将这个json对象更改为java组件,并使用java调用各种java函数。我在将这个json对象转换为java组件时遇到问题。 我创建了以下两个java类 @JsonAutoDetect public c
data = {
"amount": "70",
"cardNumber": "4222222222222",
"expiryDate": "1215",
"currency": "Currency.ISK.alpha"
}
我想将这个json对象更改为java组件,并使用java调用各种java函数。我在将这个json对象转换为java组件时遇到问题。
我创建了以下两个java类
@JsonAutoDetect
public class Handpoint {
private String amount;
private String cardNumber;
private String expireDate;
private String currency;
public String getAmount() { return amount; }
public void setAmount(String amount) { this.amount = amount; }
public String getCardNumber() { return cardNumber; }
public void setCardNumber(String cardNumber) { this.cardNumber = cardNumber; }
public String getExpireDate() { return expireDate; }
public void setExpireDate(String expireDate) { this.expireDate = expireDate; }
public String getCurrency() { return currency; }
public void setCurrency(String currency) { this.currency = currency; }
}
及
配置文件很简单
<flow name="json_to_java_componentFlow1" doc:name="json_to_java_componentFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="json" doc:name="HTTP"/>
<component class="is.threesixtyfive.example.HandpointService" doc:name="Java"/>
</flow>
任何帮助都将不胜感激JSON和POJO之间的字段名不同
在JSON中:
expiryDate
在POJO中:
expireDate
问题来自以下事实:
- 入站HTTP端点是
,因此它将向调用者返回响应请求-响应
- 组件方法没有返回值
<set-payload value="foo" />
组件完成后,错误清除(HTTP客户端收到“foo”)。我认为一种方法是首先处理转换部分,使用transformer JSON to Object并加载映射引用,然后使用Java组件加载HandpointService类,并使其成为可调用的类,这样您就可以拥有类的入口点。谢谢,我修复了输入错误。我得到的错误消息是:根异常堆栈跟踪:org.mule.api.transformer.transformerMessageException:转换的对象类型为:“SimpleDataType{type=java.lang.String,mimeType='/'}”,但预期的返回类型为“SimpleDataType{type=org.mule.api.transport.OutputHandler,mimeType='application/json'}”。当前多消息为空!请将此报告给dev@mule.codehaus.orgThe我现在得到的错误:转换的对象的类型是:“SimpleDataType{type=java.lang.String,mimeType='/'}”,但预期的返回类型是“SimpleDataType{type=org.mule.api.transport.OutputHandler,mimeType='application/json'}”。当前多重年龄为空!请将此报告给dev@mule.codehaus.org(org.mule.api.transformer.TransformerException)(org.mule.api.transformer.TransformerException)。消息有效载荷的类型为:Handpoint
Message : Failed to transform from "json" to
"is.threesixtyfive.example.Handpoint"
Code : MULE_ERROR-109
--------------------------------------------------------------------------------
Exception stack is:
1. Unrecognized field "expiryDate" (Class is.threesixtyfive.example.Handpoint), not marked as ignorable
at [Source: java.io.InputStreamReader@26940a2e; line: 1, column: 98] (through reference chain: is.threesixtyfive.example.Handpoint["expiryDate"]) (org.codehaus.jackson.map.exc.UnrecognizedPropertyException)
org.codehaus.jackson.map.exc.UnrecognizedPropertyException:53 (null)
2. Failed to transform from "json" to "is.threesixtyfive.example.Handpoint" (org.mule.api.transformer.TransformerException)
org.mule.module.json.transformers.JsonToObject:136 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "expiryDate" (Class is.threesixtyfive.example.Handpoint), not marked as ignorable
at [Source: java.io.InputStreamReader@26940a2e; line: 1, column: 98] (through reference chain: is.threesixtyfive.example.Handpoint["expiryDate"])
at org.codehaus.jackson.map.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:53)
at org.codehaus.jackson.map.deser.StdDeserializationContext.unknownFieldException(StdDeserializationContext.java:267)
at org.codehaus.jackson.map.deser.std.StdDeserializer.reportUnknownProperty(StdDeserializer.java:673)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************
<set-payload value="foo" />