0

春の3コントローラー

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

jsonが以下のように返されるように、どのファイルを変更する必要がありますか

戻る代わりに"['foo', 'bar']"

これを返す "/*['foo', 'bar']*/" (コメント付き)?

4

2 に答える 2

1

カバーの下で、SpringMVCHttpMessageConverterはシリアル化を実行するためにに委任します。この場合、SpringMVCはJacksonJSONプロセッサーMappingJacksonHttpMessageConverter上に構築されたものを呼び出します。この実装は、クラスパスにJacksonが存在するmvc:annotation-driven構成要素を使用すると自動的に有効になります。

したがって、HttpMessageConverter オーバーライドすることで独自の実装を提供できます

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

MappingJacksonHttpMessageConverterのメソッド。目的を果たすことができます。

于 2010-12-05T15:14:41.063 に答える
1

コメントに関する簡単なメモ:コメントは(alas!)JSON仕様の一部ではないため、コメントを使用するということは、非標準のJSONを使用することを意味します。

価値があるものについては、一部のJSONパーサー(Jacksonを含む)にコメントを処理させることができます(Jacksonについては、http://wiki.fasterxml.com/JacksonFeaturesParserを参照してください)。それらを書き込むだけでなく('JsonGenerator.writeRaw( "/ ... /")'を使用する必要があります)。

しかし、おそらくSpringには応答を装飾する方法があります。これは、おそらく実装が簡単になるためです。

于 2010-12-07T17:09:57.813 に答える