2017-11-14 6 views
0

私は以下のjsonスキーマを持っています。スキーマには@文字が含まれています。これはどのようにしてJava pojoに変換されますか?Jsonに '@attr'という名前のjava POJOがある

あなたはジャクソンライブラリを使用してのような何かを行うことができますサンプルJSON

{ 
"@type":"employee", 
"name":"John Doe" 
} 

答えて

4

に:

public class Person { 

    private final String type; 

    private final String name; 

    @JsonCreator 
    public Person(@JsonProperty("@type") String type, @JsonProperty("name") String name) { 
     this.type = type; 
     this.name = name; 
    } 

    public String getType() { 
     return type; 
    } 

    public String getName() { 
     return name; 
    } 
} 
+0

コンストラクタではなく、private変数に対して注釈を付けることはできますか? – user5765683

+0

いいえ、非マーシャリング(jsonからjava pogo)時にフィールド上のJsonPropertyを持つJsonCreatorオーバーコンストラクタが使用されるため、通常はJsonPropertyの他の変数を整列化(java - > json)する必要がありますが、 Javaのフィールド名は、json属性の値になります。 – Ian

+0

それは動作します。助けてくれてありがとう。私は、JsonGetterとjsonsetterアノテーションが動作することも発見しました – user5765683

0

Gsonは別の代替です:

public class Person{ 
    @SerializedName("@type") 
    public String type; 

    public String name; 
} 

、あなたのようにそれを使用することができます。

Person person = new Gson().fromJson(YOURJSON,Person.class); 
関連する問題