2016-04-06 6 views
1

こんにちは私は初心者ですので、高レベルのソリューションを理解できない場合があります。REST APIレスポンスのフィールド名を変更する

これまでのところ、私はREST APIの応答を送信したいと思います。ですから、基本的には、メソッドからオブジェクトを返すと、そのオブジェクトのフィールドと対応する値がAPIレスポンスに表示されます。明確にすることが

は、今、私たちは上記のクラス(サンプルABC)のオブジェクトを持って言うことができます私たちは

Class Sample 
{ 
    String fruit; 
    int cost; 
} 

として定義されたクラスを持って言うことができます。 以下のようにまた、我々は方法があります。だから私は取得しています応答が

{ 
    "fruit":"apple", 
    "cost":100 
} 

は、今私が欲しいものを受けて、「fruit.name」ですが、明らかに私ができることである

@RequestMapping(/inventory) 
public Sample getInventory() 
{ 
    Sample abc = new Sample(); 
    ----Some processing---- 
    return abc; 
} 

その名前のフィールド(ドットまたは@文字を持つ)がありません!

{ 
    "fruit.name":"apple", 
    "[email protected]":100 
} 

このような対応が得られる方法はありますか?

+0

を使用することができJacksonを使用している場合は、カスタム・シリアライザで簡単にそれを達成することができます。あなたは何を使っていますか?ジャクソン? – dambros

+0

おそらくね。 com.fasterxml.jackson.core ジャクソン注釈 $ {ジャクソンannotations.version}他ジャクソン関連の依存関係と一緒に ... – gautam

+0

与えられた答えは:のpom.xmlが言うので、簡単な解決策です。 '.'や' @ 'をプログラムで追加したいのでない限り、あなたが作成するすべてのクラスに対して多くのフィールドがある場合に備えてください。それから、カスタムシリアライザを使う方が良いでしょう。そうであれば教えてください。私はあなたに例を挙げることができます。 – dambros

答えて

2

あなたが@JsonProperty

public class Sample { 
    @JsonProperty("fruit.name") 
    public String fruit; 
    @JsonProperty("[email protected]") 
    public int cost; 
} 
+0

ああ、ありがとう!...それは働いている! – gautam

+0

ようこそ。あなたの問題を解決したら答えを受け入れてください。乾杯。 – Diyarbakir

関連する問題