目次
序文
- いつも曖昧で忘れがちなので
@DateTimeFormat
今日@JsonFormat
はメモしておきます 原理が絡んでいないのでソースコードが解析しきれていないので時間がある時にソースコードを見てみます - お急ぎの場合は、認証プロセスをスキップして直接視聴することもできます
结论
。
テストコード
- 基本的なコードは次のとおりです。
- エンティティクラス
public class User {
public final static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
private String name;
private Date birthday;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
- コントローラ
@RestController
public class TestController {
@RequestMapping("/test")
public User test(User user){
return user;
}
}
@DateTimeFormat
注釈なしで
- postman を使用してパラメータを渡すことができません
birthday
。
- 通常をキャンセルします
birthday
。
通常のリクエスト
- それでは追加しましょう
@DateTimeFormat
。
@DateTimeFormat(pattern = YYYY_MM_DD_HH_MM_SS)
private Date birthday;
- 入社後
GET/POST都成功
。
JSONリクエスト
- リクエストパラメータがjsonの場合をテストしてみましょう。
@RequestMapping("/test")
public User test(@RequestBody User user){
return user;
}
- 干渉しないように、最初は name パラメータだけを試してください。
- name パラメーターは成功し、birthday パラメーターが追加されますが、例外が発生し、JSON を渡すことができません。
@JsonFormat
通常のリクエスト
- コード
@JsonFormat(pattern = YYYY_MM_DD_HH_MM_SS)
private Date birthday;
- 通常のリクエストエラー
JSONリクエスト
- コントローラーを変更する
@RequestMapping("/test")
public User test(@RequestBody User user){
return user;
}
- 検査結果は正常です
- 注:
Spring框架默认序列化框架用Jackson,所以你没改序列化框架的话,加了@JsonFormat还具备格式化返回值的能力
。
その他の方法 (@InitBinder)
- 新しいものを追加
BaseController
、TestController 継承BaseController
public class BaseController {
/**
* 将前台传递过来的日期格式的字符串,自动转化为Date类型
*/
@InitBinder
public void initBinder(WebDataBinder binder)
{
// Date 类型转换
binder.registerCustomEditor(Date.class, new PropertyEditorSupport()
{
@Override
public void setAsText(String text)
{
setValue(DateUtils.parseDate(text));
}
});
}
}
@RestController
public class TestController extends BaseController {
@RequestMapping("/test")
public User test(User user){
return user;
}
}
- このようにして、通常のリクエストの時間を受け取る機能も取得します。
- ただし、JSON リクエストはエラーを報告します。
結論は
@DateTimeFormat
通常のリクエスト メソッドに適用され、JSON リクエスト メソッドはエラーを報告します。@JsonFormat
JSONリクエストメソッドに適用され、通常のリクエストではエラーが報告されます。
- 注:
Spring框架默认序列化框架用Jackson,所以你没改序列化框架的话,加了@JsonFormat还具备格式化返回值的能力
。
@InitBinder
このメソッドではコードを自分で記述する必要があり、その効果は@DateTimeFormat
通常のリクエスト メソッドと同様で、JSON リクエスト メソッドはエラーを報告します。
送信元アドレス
- https://github.com/1030907690/spring-boot-kubernetes/tree/v1.0.3 @DateTimeFormat および @JsonFormat テスト