2016-06-27 7 views
0
{ 
    "customer": { 
    "ssoId":"B56789", 
    "brand":"123-reg", 
    "forename":"John", 
    "surname":"Doe", 
    "title":"Mr", 
    "companyName":"Unilever", 
    "primaryEmail":"[email protected]", 
    "currency":"$", 
    "language":"English", 
    "vatNumber":"D4531234", 
    "vatCode":"12B6", 
    "ipAddress":"127.0.0.1" 
    } 
} 

これは私のJSONファイルです。私はApache CamelをPOJOに使用してアンマーシャリングしようとしていますが、そのエラーをスローし続けます。 @JsonIngorePropertiesを追加すると、POJOに値を設定せずにnullオブジェクトが返されます。JsonをJavaに解析する

@Data 
@JsonInclude(NON_EMPTY) 
public final class Customer{ 
    @JsonProperty(value = "ssoId", required = true) 
    private String ssoId; 

    @JsonProperty(value = "brand", required = true) 
    private String brand; 

    @JsonProperty(value = "forename", required = true) 
    private String forename; 
    //...... 
} 
Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: 
Unrecognized field "customer" (class com.heg.esb.model.Customer), not 
marked as ignorable (17 known properties: "addresses", "phones", 
"brand", "companyName", "ssoId", "ipAddress", "currency", "vatNumber", 
"vatCode", "title", "primaryEmail", "surname", "lastVerificationDate", 
"forename", "lastModifiedDate", "createdDate", "language"]) 
at [Source: [email protected]; line: 2, column: 16] (through reference chain: com.heg.esb.model.Customer["customer"]) 
at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:51) 
at com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:839) 
at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1045) 
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1352) 
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1330) 
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:264) 
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:125) 
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3736) 
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2796) 
at org.apache.camel.component.jackson.JacksonDataFormat.unmarshal(JacksonDataFormat.java:173) 
at org.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:69) 
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77) 
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460) 
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190) 
at org.apache.camel.processor.Pipeline.process(Pipeline.java:121) 
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83) 
at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:117) 
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77) 
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460) 
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190) 
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190) 
at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109) 
at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:87) 
at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:112) 
+0

@ CustomerCustomerクラスには、@ JsonPropertyまたは@JsonIgnoreのいずれかのアノテーションなしで「customer」フィールドがありますか? – Wilson

+0

これは財産ではありませんが、POJOと識別するためにラクダの青写真でJsonpathで使用する必要があるものです。 – Sammy65

+0

ああ!私はそれが重複してマークされたことに気づいた。まあ、私はそれを投稿する前に追加されたリンクを見ていたわけではありません。私はJSONファイルを上記のPOJOに変換する方法を尋ねていました。なぜなら、JSONはファイルの処理方法を理解するためにラッパークラスが必要だったため、中括弧の前に外側の "customer"について不平を言っていました。私はこのウェブサイトを使って自分の挑戦を解決しました。 "http://www.jsonschema2pojo.org/" – Sammy65

答えて

0

あなたはジャクソンが移入持ってしようとしている各プライベートフィールドのPOJOで公共セッターを持っている必要があります。

@JsonPropertyアノテーションにフィールド名と同じ値が指定されている場合、 "value"を指定する必要はありません。

+0

ロンボクの@Dataはゲッターとセッターを自動的に提供します。私はそれがなければ "必須"パラメータを含めることができませんでした。 – Sammy65