2016-10-18 7 views
1

フラットキー付きのJSONを生成する外部APIを(私たちが受け取ったJSONを変更することはできません)取り込みます。我々は独自のデシリアライザを書くことができます知っていながら、私が最初にこのためのサポートがGSONであっあるかどうかを確認したいと思いますフラット化されたJSONキーをGSONで適切なオブジェクトにデシリアライズ

public class SomeObject { 
    public String normal; 
    public Composite composite; 
} 

public class Composite { 
    public String key; 
    public String key2; 
} 

:例えば:私たちは、理想的にデシリアライズしたい

{ 
    "composite.key": "value", 
    "normal": "another value", 
    "composite.key2": "back here again..." 
} 

注釈やその他の手段を使用して

答えて

0

よう

何かが私は長い間、ちょうどビルトインサポートを提供@JsonUnwrapped(prefix="composite.")でラッピングオブジェクトに注釈を付けることでジャクソンを使用することです。この短いと思います。

0

GSONの@SerializedName注釈は、Javaフィールドで使用できます。この

public class Composite { 
    @SerializedName("composite.key") 
    public String key; 

    @SerializedName("composite.key2") 
    public String key2; 
} 
+0

'SomeObject'の' Composite'オブジェクトは、 'composite'キーに一致することはないため、デシリアライズされることはありません。 –

+0

@NicoHuysamenうん、私はカスタムのデシリアライゼーションが道だと思う。 – Ravikumar

+0

Nahは、これをサポートしているJacksonを使用するように選択しました。 –

関連する問題