json(类转化)序列化和lombok注解以及日志@Slf4j
json
解决json请求的前端和后端传输数据转换问题
在序列化和反序列化时对参数进行处理
name工程的一个json转化过程
@JsonDeserialize
传入的值进行转化
1、 extends JsonDeserializer
2、deserialize
deserialize(JsonParser p, DeserializationContext ctxt)
p.getText()来转化为字符串
@JsonSerialize
返回到前端数据时候 需要转化一下(getter()时候转换)
1、extends JsonSerializer
2、@JsonSerialize(using = .class)
serialize(Integer status, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
json转化为类
ObjectCodec oc = p.getCodec();
JsonNode node = oc.readTree(p);
JsonNode wcNode = node.get(WCRequest.OPS_WC);
if (wcNode == null) {
throw new FailureException(NamingErrorCode.INVALID_WC);
}
WCRequest wcRequest = new WCRequest();
ObjectMapper mapper = new ObjectMapper();
wcRequest.setOperatorWC(mapper.convertValue(wcNode, WorkContext.class));
JsonNode dataNode = node.get(WCRequest.DATA);
if (dataNode != null) {
Map<String, Object> dataMap = mapper.convertValue(dataNode, Map.class);
wcRequest.fillData(dataMap);
}
lombok
属性注解 @Getter/@Setter
为成员变量生成对应的get和set方法
@ToString/@EqualsAndHashCode
生成toString,equals和hashcode方法,
@ToString(exclude={“param1”,“param2”})来排除param1和param2两个成员变量,或者用
@ToString(of={“param1”,“param2”})来指定使用param1和param2两个成员变量,
@EqualsAndHashCode注解也有同样的用法。
类注解 @NoArgsConstructor /@AllArgsConstructor /@RequiredArgsConstructor
1/2为该类产生无参的构造方法和包含所有参数的构造方法
@RequiredArgsConstructor 配合@NonNull注解的或者带有final修饰的成员变量生成对应的构造方法
含有final修饰的成员变量,是无法使用@NoArgsConstructor注解的
(access = AccessLevel.PROTECTED 表示生成的构造器属于protected
方法参数和属性注解 NotNull
@Data/@Value
@Data相当于 一系列注解
@Value注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法
日志
日志@Slf4j
HashMap
HashMap<String, String> map = new HashMap<String, String>() { { put("Name", "June"); put("QQ", "2572073701"); } };