1.JSON转Java对象
使用的方法为google的GSON
<!--尽量使用这个版本,2.2.4会报错-->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.2</version>
</dependency>
将json数组转化为Java的List对象
/*
json字符串为
items: [{
productId: "1423113435324",
productQuantity: 2 //购买数量
}]
*/
List<OrderDetail> orderDetailList = new Gson().fromJson(orderForm.getItems(),
new TypeToken<List<OrderDetail>>() {}.getType());
2.BeanUtils复制对象
/*将source复制给destination*/
BeanUtils.copyProperties(source,destination);
需要注意的地方:
- destination必须包含source复制的字段;
3.校验注解
/*OrderForm实体类*/
@Data
public class OrderForm {
@NotEmpty(message = "姓名必填")
private String name;
@NotEmpty(message = "手机号必填")
private String phone;
@NotEmpty(message = "地址必填")
private String address;
@NotEmpty(message = "openid必填")
private String openid;
@NotEmpty(message = "购物车不能为空")
private String items;
}
/*Controller中的方法*/
@PostMapping("/create")
public ResultVo<Map<String, String>> create(@Valid OrderForm orderForm,
BindingResult bindingResult)
- 每个@Valid后都必须要有一个BindingResult接收bean的相关信息,进行相关校验操作;
- @NotNull表示不为空,但可以为empty,没有size 的限制;
- @NotBlank只用于String,不能为null且trim()之后size>0;
- @NotEmpty用于String、Map、Collection、数组,不能为null或长度为0;
4.开发建议
- 善用Java8特性(如lambda表达式等)和枚举类型(可以包含状态码、信息等);
- 数据转换没有现成的方法,就写一个Converter;
- 重复代码和逻辑,尽量写一个公用方法或类;
- 先整理清除逻辑(要写什么),再写代码,多使用单元测试;