hibernate.validator 与 jackson
1、使用hibernate.validator校验非空,在FormData类中 name字段上面加@NotEmpty
@NotEmpty(message = "姓名必填")
private String name;
在Controller @Valid注解formData ,bindingResult.hasErrors() 来看是否校验出错
public void save(@Valid FormData formData ,BindingResult bindingResult){
if (bindingResult.hasErrors() ) {
log.error("参数不正确,formData ={}",formData );
throw new SellExcetion(ResultEnum.PARAM_ERROR.getCode(),
bindingResult.getFieldError().getDefaultMessage());
}
}
2、@Transactional 加事物
3、如果想productId 在返回Json 为 id,那就在productId属性 加上@JsonProperty("id") 如:
@JsonProperty("id")
private String productId;
4、//json to Object
Gson gson = new Gson();
try {
OrderDetailList orderDetailList = gson.fromJson(orderForm.getItems(),
new TypeToken<List<OrderDetail>>(){}.getType());
orderDTO.setOrderDetailList(orderDetailList);
}catch (Exception e) {
log.error("【对象转换】 错误, String = {}",orderForm.getItems());
throw new SellExcetion(ResultEnum.PARAM_ERROR);
}
5、
@JsonIgnoreProperties
此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要。
如果指定要忽略的字段。使用方法如下:
@JsonIgnoreProperties({ "name" })
指定的字段不会被序列化和反序列化。
@JsonIgnore
此注解用于属性或者方法上(最好是属性上),作用和上面的@JsonIgnoreProperties一样。
@JsonFormat
此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式,比如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")
@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")
private Date updateTime;
效果: "updateTime": "2017-10-11 12-40-24",
@JsonSerialize
此注解用于属性或者getter方法上,用于在序列化时可以执行我们的方法
@JsonSerialize(using = Date2longSerializer.class)
private Date createTime;
这里你也可以格式化 ,最后jsonGenerator.writeString(string);
public class Date2longSerializer extends JsonSerializer<Date>{
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
jsonGenerator.writeNumber(date.getTime() / 1000);
}
}
效果:"createTime": 1507725624,
@JsonDeserialize
此注解用于属性或者setter方法上,用于在反序列化时可以执行我们的方法,类似于上面的@JsonSerialize
@JsonDeserialize(using = DateDeserializer.class)
private Date updateTime;
这里加了一天时间
public class DateDeserializer extends JsonDeserializer<Date> {
@Override
public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
Date date = deserializationContext.parseDate(jsonParser.getText());
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, 1);
return cal.getTime();
}
}
测试:
public void test2() throws IOException {
String orderDTOJson = "{\"buyerName\":\"李四\",\"buyerPhone\":\"1382719972\",\"buyerAddress\":\"男生\",\"buyerOpenid\":\"sdsdsadasd\",\"orderAmount\":450.00,\"orderStatus\":0,\"payStatus\":0,\"createTime\":1507725624000,\"updateTime\":\"1507725624000\",\"orderId\":\"1507725621667450867\"}";
ObjectMapper mapper = new ObjectMapper();
OrderDTO orderDTO = mapper.readValue(orderDTOJson, OrderDTO.class);
System.out.println(orderDTO.getUpdateTime());
}
hibernate.validator 与 jackson的更多相关文章
- java.lang.NoClassDefFoundError: org/hibernate/validator/internal/engine/DefaultClockProvider
①在springboot的spring-boot-starter-web默认引入了以下依赖: <dependency> <groupId>com.fasterxml.jacks ...
- spring boot中使用javax.validation以及org.hibernate.validator校验入参
这里springboot用的版本是:<version>2.1.1.RELEASE</version> 自带了hibernate.validator,所以不用添加额外依赖 1.创 ...
- Hibernate Validator验证标签说明
Hibernate Validator是JSR-303的一个实现. 在FormBean里添加Hibernate Validator的注解,与定义一个校验类的做法相比.注解更加简洁.灵活. Bean V ...
- 非WEB项目中引入Hibernate Validator
前言: 网上一些朋友分享了关于hibernate-validator的使用方法,但是不是缺少关联库信息,就是提供的参考代码中缺少自定类. 希望我这一篇博客能够让你顺利的跑出预期的结果. 如果有错,可以 ...
- Hibernate Validator
http://docs.jboss.org/hibernate/validator/4.2/reference/zh-CN/html_single/#example-group-interfaces
- spring boot 1.4默认使用 hibernate validator
spring boot 1.4默认使用 hibernate validator 5.2.4 Final实现校验功能.hibernate validator 5.2.4 Final是JSR 349 Be ...
- Hibernate validator验证
spring-mvc配置 <mvc:annotation-driven validator="validator" /> <bean id="valid ...
- springMvc 支持hibernate validator
SpringMVC 支持Hibernate Validator 发表于9个月前(2014-08-04 11:34) 阅读(1780) | 评论(0) 11人收藏此文章, 我要收藏 赞0 5月23日 ...
- SpringMVC利用Hibernate validator做字段验证
1.添加Hiberbate validator相关的jar包 2.字需要验证的formbean 上添加验证的注解,内置注解有: dBean Validation 中内置的 constraint @Nu ...
随机推荐
- 题解 P2272 【[ZJOI2007]最大半连通子图】
P2272 [ZJOI2007]最大半连通子图 萌新初学Tarjan,在<信息学奥赛一本通-提高篇>中看到这题,看到题解不多,便想发布一篇较为清新简洁的题解.--第5道紫题 题目大意: 定 ...
- webService 的使用
webService Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些 ...
- [HDOJ] 1172.猜数字
Problem Description 猜数字游戏是gameboy最喜欢的游戏之一.游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么.每 猜一个数,计算机都会告诉玩家猜对几个数 ...
- Linux系统安装jdk——.tar.gz版(old)
这里简单地阐述一下rpm.deb.tar.gz的区别. rpm格式的软件包适用于基于Red Hat发行版的系统,如Red Hat Linux.SUSE.Fedora. deb格式的软件包则是适用于基于 ...
- iView学习笔记(一):Table基本操作(包含前后端示例代码)
iView表格操作 1.前端准备工作 首先新建一个项目,然后引入iView插件,配置好router npm安装iView npm install iview --save cnpm install i ...
- gRPC in ASP.NET Core 3.0 -- Protocol Buffer(1)
现如今微服务很流行,而微服务很有可能是使用不同语言进行构建的.而微服务之间通常需要相互通信,所以微服务之间必须在以下几个方面达成共识: 需要使用某种API 数据格式 错误的模式 负载均衡 ... 现在 ...
- Scala的常用小技巧
1."RichString.java".stripSuffix(".java") == "RichString" "http:// ...
- Windows上切换java8和java11
Windows上安装了java8和java11,时不时要切换,于是思考写行命令解决.思路是修改java_home变量.我的java_home变量是设置在系统级别的. 修改环境变量有2个命令,set和s ...
- Thread.Sleep太久,界面卡死
在Winform程序的UI界面使用Thread.Sleep,窗体界面会被卡死,如图1所示,程序sleep 5000毫秒,时间到了之后,按钮的名称才更改过来,窗体也能被鼠标拖动.而用Delay方法,就能 ...
- Unity经典游戏教程之:是男人就下100层
版权声明: 本文原创发布于博客园"优梦创客"的博客空间(网址:http://www.cnblogs.com/raymondking123/)以及微信公众号"优梦创客&qu ...