转换要求
JSON数据转换为Java实体对象时,字段会有不对应的情况:比如大小写、下划线、驼峰、或者JSON数据的key中有特殊字符,无法进行属性映射。
解决思路
使用@JSONField注解
- JSON数据
{ "user.age": 18, "userName": "kaysen" } - Java对象
@JSONField(name = "userName") private String name; @JSONField(name = "user.age") private Integer age; - 转换与输出
User user = JSON.parseObject(user, User.class); System.out.println(user ); 输出: User(name=kaysen, age=18)
@JSONField相关
- 解决字段映射问题;
- 解决数据格式问题,比如日期格式化;
- 序列化与反序列化问题;
- 默认值设置等等。
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
public @interface JSONField {
int ordinal() default 0;
String name() default "";
String format() default "";
boolean serialize() default true;
boolean deserialize() default true;
SerializerFeature[] serialzeFeatures() default {};
Feature[] parseFeatures() default {};
String label() default "";
boolean jsonDirect() default false;
Class<?> serializeUsing() default Void.class;
Class<?> deserializeUsing() default Void.class;
String[] alternateNames() default {};
boolean unwrapped() default false;
String defaultValue() default "";
}