2017-06-20 4 views
0

春休みアプリケーションのコンテキストで、私は一般的なレスポンスBeanを作成しようとしています。レスポンスBean拡張マップ

目的は、メソッドごとに特定のBeanを作成しないようにすることです。

さまざまなプロパティをマップにバインドすることで、ステータスやメッセージなどの標準フィールドを使用したいと考えています。

は、次の例を考えてみましょう:

public class ResponseRestDefault extends HashMap { 
    private String status; 
    private String message; 

    public ResponseRestDefault() { 
    } 

    public void addParam(String key, String value) { 
     this.put(key, value); 
    } 

    public String getStatus() { 
     return status; 
    } 

    public void setStatus(String status) { 
     this.status = status; 
    } 

    public String getMessage() { 
     return message; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 
} 

使用

@RequestMapping(value = "response", method = RequestMethod.GET) 
public ResponseEntity<ResponseRestDefault> response() { 

    ResponseRestDefault response = new ResponseRestDefault(); 

    response.setStatus("success"); 
    response.setMessage("ok"); 
    response.addParam("test", "value"); 

    return ResponseEntity.ok(response); 
} 

JSON結果:

{ 
    "test": "value" 
} 

は、JSONの結果は、マップフィールドとクラスのプロパティを含めることができていますか?

+0

反復してもしそうなら、あなたは、これはハッシュマップの場合、コンテナはちょうどチェックしているためそれはあなたのフィールドを無視している – efekctive

+1

求めているものは明らかではありませんキーと値のペアあなたが一般的な応答をしたいのであれば、それは本当に簡単です。たぶん文字列 – efekctive

+0

それは意味があります。多分私は構図を使用します。 –

答えて

0

レスポンスクラスを変更する必要があります。 mapのgetterメソッドとsetterメソッドがあることを確認してください。

public class ResponseRestDefault { 
    private String status; 
    private String message; 
    private Map<String, String> map = new HashMap<>(); 

    public ResponseRestDefault() { 
    } 

    public void setMap(String key, String value) { 
    map.put(key, value); 
    } 

    public Map<String, String> getMap() 
    { 
    return map; 
    } 

    public String getStatus() { 
     return status; 
    } 

    public void setStatus(String status) { 
     this.status = status; 
    } 

    public String getMessage() { 
     return message; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 
} 

あなたは形式以下で応答を取得します:

{ 
    "status": "success", 
    "message": "ok", 
    "map": { 
     "test": "value" 
    } 
} 
関連する問題