maven依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.1</version>
</dependency>
直接上代码:
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.tqmall.grace.entity.rabbitmq.SaleLogBo; import org.junit.Test; import java.io.IOException; import java.util.Date; /** * Created by tom_plus on 16/8/26. */ public class JsonTest { @Test public void BoToJson() { SaleLogBo logBo = new SaleLogBo(); logBo.setId(1); logBo.setBillNo("xj383833"); logBo.setShippingName("国际快递"); logBo.setGmtCreates("2016-08-09"); logBo.setUpdateDate(new Date()); ObjectMapper objectMapper = new ObjectMapper(); try { String st = objectMapper.writeValueAsString(logBo); try { SaleLogBo bo = objectMapper.readValue(st, SaleLogBo.class); System.out.println(bo.getBillNo()+">>>>>"); System.out.println("id:"+bo.getId()); } catch (IOException e) { e.printStackTrace(); } System.out.println(st); } catch (JsonProcessingException e) { e.printStackTrace(); } } }
@Data public class SaleLogBo implements Serializable{ private Integer warehouseId; @JsonProperty("sale_id") private Integer id; private Integer payType; private Integer shippingId; private String shippingName; private String comment; private BigDecimal shippingFee; @JsonIgnore private String gmtCreates; private Integer creator; private Integer shopId; private Integer orderFlag; private String billNo; private String logisticsName; private Integer billStatus; @JsonFormat(pattern = "yyyy年MM月dd日 HH时mm分ss秒",timezone="GMT+8") private Date updateDate; }
跑main函数运行结果:
billNo:xj383833
id:1
{"warehouseId":null,"payType":null,"shippingId":null,"shippingName":"国际快递","comment":null,"shippingFee":null,"creator":null,"shopId":null,"orderFlag":null,"billNo":"xj383833","logisticsName":null,"billStatus":null,"updateDate":"2016年08月26日 17时50分45秒","sale_id":1}
注解解析:
@JsonProperty,在把bo转成json的时候,如果要修改某些属性的名字,可以使用。
@JsonIgnore bo转成json的时候,进行序列化的时候忽略标记该注解的属性。
@JsonFormat 格式转化,例如@JsonFormat(pattern = "yyyy年MM月dd日 HH时mm分ss秒",timezone="GMT+8")
,其中要加上timezone="GMT+8",代表北京时间,否则将合北京时间差一天。