2010-12-05 4 views
0

クライアントに送信する前にjsonにコメントする

@RequestMapping(value = "/employee/{id}", RequestMethod.GET) 
public @ResponseBody Employee getEmployee(@PathVariable long empID) { 
    Employee employee = employeeService.getByID(empID); 
    return employee; 
} 

jsonが以下のように返るように、ファイルを変更する必要があります。"['foo', 'bar']"

+0

これはどのような場合ですか? – skaffman

+1

@skaffman、これをやる理由は何ですか?ここをクリックhttp://tinyurl.com/mq96sh、タイトルを参照してください 'シングルサイトアプリケーションの保護' – cometta

答えて

1

カバーの下で、Spring MVCはHttpMessageConverterに委譲してシリアル化を実行します。この場合、Spring MVCは、Jackson JSONプロセッサで構築されたMappingJacksonHttpMessageConverterを呼び出します。この実装はmvc:注釈駆動の構成要素を使用してクラスパスに存在するのJacksonを使用すると自動的に有効になります。

だから、あなたはどのサーバー目的の可能性MappingJacksonHttpMessageConverter、の

protected void writeInternal(Object o, 
         HttpOutputMessage outputMessage) 
        throws IOException, 
         HttpMessageNotWritableException 

メソッドをオーバーライドすることで、独自のHttpMessageConverterの実装を提供することができます。

+0

これを行うには、春のインターセプタpostHandleを使用することは可能ですか?はいの場合、私はpostHandleメソッドのために何を置くべきですか?このメソッドから生のjsonを取得する方法は? – cometta

+0

@comettaすでにフラッシュされている/コミットされているコンテンツを変更することはできないと思うので、postHandleだけを使用するのは適切な解決策ではありません。 preHandleも使用する必要があります。 –

1

コメントに関するクイックメモ:コメントはJSON仕様の(悲しい)部分ではないので、標準でないJSONを使用することを意味します。

JSONパーサー(Jacksonを含む)がコメントを処理することは可能です(Jacksonの場合、http://wiki.fasterxml.com/JacksonFeaturesParserを参照)。 (「JsonGenerator.writeRaw( "/ ... /") 'を使用する必要があります)。

しかし、おそらくSpringにはレスポンスをデコレートする方法があります。これはおそらく実装が簡単なためです。

関連する問題