2016-10-17 3 views
1

私はJSONジャクソンは

{ 
    "known-name": "Zevs", 
    "approximate-age": 320 
} 

とバインディングクラス

public class GodBinding { 

    @JsonProperty("known-name") 
    public String name; 

    @JsonProperty("approximate-age") 
    public int age; 

    // constructors 
    // getters & setters 
} 

そしてfollowng Mavenの依存関係を次したプロパティ名と等しくないフィールド名場合は機能していない@JsonProperty 2.23.2 2.5.4

<dependencies> 
    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet</artifactId> 
     <version>${jersey.version}</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.jaxrs</groupId> 
     <artifactId>jackson-jaxrs-json-provider</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 
</dependencies> 

そのようなjsonを投稿すると、予期せぬ結果がnullで発生します。

GodBinding [name=null, age=0] 

私は名前なし@JsonPropertyを使用して、誰かが知っている場合は、プロパティ名等しいフィールド名

{ 
    "name": "Zevs", 
    "age": 320 
} 

が、@JsonPropertyを作る方法を、

GodBinding [name=Zevs, age=320] 

罰金働いているJSONを送信する場合正しく動作しているフィールドの名前(「名前」)

+0

@JsonProperty(「anyname」)注釈が唯一のフィールド名でデータをバインドするために、任意の名前とtryiesを無視を見ることができ、あなたのPOM

<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.4.4</version> </dependency> 

にこれを追加する必要があります。 – cane

答えて

0

あなたが例にhere

+0

jackson-databindはすでにjackson-jaxrs-json-providerが原因でした。 – cane

+0

与えられた例については、等しいjsonプロパティ名とオブジェクトフィールド名があります。例えば、名前または姓。それが理由です - 問題はありません。 – cane