答えは、ユースケースによって異なります。私の提案は、ニーズにぴったり合うカスタム値オブジェクトを作成し、それを返し、Jackson にシリアル化を処理させることです。
@ResponseBody
@RequestMapping(value = "/someAjaxResponse", method = RequestMethod.POST)
public CustomValueObject someAjaxResponse(HttpServletRequest request, HttpServletResponse response) {
}
<mvc:annotation-driven />
またはをアプリケーション コンテキストに追加し、Jackson の依存関係をクラスパスに追加するだけで、アノテーション@EnableWebMvc
を使用するため、オブジェクトは自動的に JSON にシリアル化されます。@ResponseBody
詳細についてはMappingJacksonHttpMessageConverter
、Spring リファレンス マニュアルを参照してください。
返されるオブジェクトは複雑な構造を持つ場合があることに注意してください。個人データをクライアントに提供したい場合Person
、コントローラー メソッドからオブジェクトを返すことができます。
public class Person {
public String getFirstName() {...}
public int getAge() {...}
List<String> getEmailAddresses() {...}
Address getAddress() {...}
}
public class Address {
public String getStreet() {...}
public int getHouseNumber() {...}
public String getCity() {...}
public int getZIP() {...}
public String getState() {...}
}
次のようにシリアル化できます。
{
"firstName": "John",
"lastName": "Doe",
"age": 42,
"emailAddresses": [
"john@doe.com",
"john.doe@somewhere.com"
],
"address": {
"street": "First Avenue",
"houseNumber": 123,
"city": "Smallville",
"ZIP": 12345,
"state": "CA"
}
}