2017-12-01 3 views
1

xmlからJava Beanを作成しようとしています。com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException

<CommunicationFile count="1"> 
    <Communication> 
     <creationDate>2017-11-25</creationDate> 
     <Document> 
      <objectReference>111111</objectReference> 
     </Document> 
     .......... 
    </Communication> 
</CommunicationFile> 

はここに私のJavaファイルです: 以下は私のxmlです。私は、ジャクソンのXMLプロパティを使用してXMLに変数への正確なマッピングを作成しました:

@JacksonXmlRootElement(localName = "CommunicationFile") 
public final class CommunicationFile { 
@JacksonXmlProperty(localName = "count", isAttribute = true) 
private String count; 
@JacksonXmlElementWrapper(localName = "Communication") 
private Communication[] communication; 

    ..Standard setter and getters... 

} 
------ 

以下はCommunicationのラッパークラスです。このクラスは、ネストされた要素のためのものですCommunicatonFile

ジャクソンのAPIを使用してPOJOには、XMLをマッピングしようとすると
public final class Communication { 

    @JacksonXmlProperty(localName = "creationDate") 
    private String creationDate; 
    @JacksonXmlElementWrapper(localName = "Document") 
    private Document document; 
    .. standard setter and getters 
} 

XMLInputFactory f = XMLInputFactory.newInstance(); 
XMLStreamReader sr = f.createXMLStreamReader(new FileInputStream("billing.xml")); 

XmlMapper mapper = new XmlMapper(); 
sr.next(); // to point to <root> 
sr.next(); // to point to root-element under root 
CommunicationFile comm = mapper.readValue(sr, CommunicationFile.class); 

はエラーを下回る行き方:jacksonCommunicationFileクラスのcreationDateを探している理由

Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "creationDate" (class com.pm.communication.CommunicationFile), not marked as ignorable (2 known properties: "Communication", "count"]) 
at [Source: com.[email protected]981206cc; line: -1, column: -1] (through reference chain: com.pm.communication.CommunicationFile["creationDate"]) 
    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._readValue(ObjectMapper.java:3708) 
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2071) 
    at com.fasterxml.jackson.dataformat.xml.XmlMapper.readValue(XmlMapper.java:205) 
    at com.fasterxml.jackson.dataformat.xml.XmlMapper.readValue(XmlMapper.java:180) 
    at com.pm.docmaker.tpd.Parser.main(Parser.java:25) 

は私はわかりません。 creationDateCommunicationクラスです。私はjackson 2.6.7 APIを使用しています。

+0

それはタイプミスですか?コードの_CreationDate_とXMLの_creationDate_ – Andy

+0

作成日に小さな 'c'とCapital 'C'を試しました。両方に同じエラーが発生します。 – Bhaskar

答えて

0

質問のXMLには、Communication要素のアンラップされたコレクションがあります。この注釈は注釈で指定する必要があります。例:XMLをする必要があり、現在の注釈に基づいて

@JacksonXmlElementWrapper(localName = "Communication", useWrapping = false) 
private Communication[] communication; 

<CommunicationFile count="1"> 
    <Communication> 
    <Communication> 
     <creationDate>2017-11-25</creationDate> 
     ... 
    </Communication> 
    <Communication> 
     <creationDate>2018-07-11</creationDate> 
     ... 
    </Communication> 
    </Communication> 

ジャクソンが第2レベル<Communication>の欠如と混同し、明らかに/奇妙creationDateCommunicationFile

の一部とみなしています
+0

返事をありがとう。しかし私のXMLは以下のようなものです。私は1つのコミュニケーション要素しか持っていません。 <通信> <のCreationDate> 2017年11月25日 ... <のCreationDate> 2018年7月11日 .. 。 Bhaskar

+0

これは、アノテーションで 'useWrapping = false'を使う必要があるからです。あなたはそれを試しましたか? –

+0

ご迷惑をおかけして申し訳ありません。それは働いている。ありがとうございます。 – Bhaskar

関連する問題