2016-06-23 11 views
1

JSONを私のPOJOオブジェクトにデシリアライズする際に問題があります。ジャクソン認識できないフィールド "media:recent"

私はmapper.readValue(JSONを実行しようとするとこれは

そして、ここでは私のクラスは

@JsonInclude(JsonInclude.Include.NON_NULL) 
@Generated("org.jsonschema2pojo") 
@JsonPropertyOrder({ 
    "media:recent" 
}) 
public class Embedded__ { 

    @JsonProperty("media:recent") 
    private MediaRecent mediaRecent; 

    /** 
    * 
    * @return 
    *  The mediaRecent 
    */ 
    @JsonGetter("media:recent") 
    public MediaRecent getMediaRecent() { 
     return mediaRecent; 
    } 

    /** 
    * 
    * @param mediaRecent 
    *  The media:recent 
    */ 
    @JsonSetter("media:recent") 
    public void setMediaRecent(MediaRecent mediaRecent) { 
     this.mediaRecent = mediaRecent; 
    } 

} 

です....私のJSON

....."_embedded": { 
"media:recent": { 
    "_links": { 
     "self": { 
      "href": "//url" 
     } 
    } 
} 

}の抜粋です、Response.class) プログラムは次のエラーをスローしています:

Caused by: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "media:recent" (Class ...Embedded__), not marked as ignorable 
at [Source: [email protected]; line: 69, column: 22] (through reference chain: ......Response["data"]->......Data["_embedded"]->......Embedded["media"]->......Medium["_embedded"]->......Embedded_["uploader"]->......Uploader["_embedded"]->......Embedded__["media:recent"]) 
    at org.codehaus.jackson.map.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:53) 

おそらく、問題はコロンを持つためプロパティの名前です。 この種のフィールドをマップするためのソリューションはありますか?

@JsonInclude(JsonInclude.Include.NON_NULL) 
    @Generated("org.jsonschema2pojo") 
    @JsonPropertyOrder({ 
    "media:recent" }) 
    @JsonRootName(value = "_embedded") 
    public class Embedded__ { 
    } 

そして、あなたのマッパーに "UNWRAP_ROOT_VALUE" 設定を追加します:

おかげ

答えて

0

は、あなたのEmbedded__クラスにルートの名前で@JsonRootName注釈を追加してみ

ObjectMapper mapper = new ObjectMapper(); 
mapper.configure(Feature.UNWRAP_ROOT_VALUE, true); 
mapper.readValue(json, Response.class) 
関連する問題