记录一个使用lombok的坑(内部类也必须使用@Data注解)

简介: 记录一个使用lombok的坑(内部类也必须使用@Data注解)
今天做一个测试,一个类中嵌套一个集合类,对最外层的类使用logbok,对内部类没使用。最后导致Json串转java类之后内部类没有属性值。具体如下

示例json串

{
  "displayValue": test",
  "empty": false,
  "values": [
    {
      "empty": false,
      "id": "xxx",
      "name": "test"
    }
  ]
}

示例代码

import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class NGSearchFilterFiledCheeck implements Serializable{
    private String displayValue;
    private String empty;
    private List<Values> values;
    public static class  Values implements Serializable {
        private String empty;
        private String id;
        private String name;
    }
}
import com.alibaba.fastjson.JSON;
import com.souche.thriver.bean.NGSearchFilterFiledCheck;
import java.util.*;
/**
 * @author fanlongfei
 * @date 2021年09月14日 6:30 下午
 */
public class DemoTest {
    public static void main(String[] args) {
        String jsonStr = "{\n" +
                "        \"displayValue\": \"test\",\n" +
                "        \"empty\": false,\n" +
                "        \"values\": [\n" +
                "          {\n" +
                "            \"empty\": false,\n" +
                "            \"id\": \"xxx\",\n" +
                "            \"name\": \"test\"\n" +
                "          }\n" +
                "        ]\n" +
                "      }";
        NGSearchFilterFiledCheck filter = JSON.parseObject(jsonStr, NGSearchFilterFiledCheck.class);
        System.out.println(JSON.toJSONString(filter));
    }
}

运行结果

类中的values属性为空
{"displayValue":"联盟测试店铺主店对内","empty":"false","values":[{}]}
经过排查是内部类没有加@Data注解造成的,加上之后就运行ok
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class NGSearchFilterFiledCheeck implements Serializable{
    private String displayValue;
    private String empty;
    private List<Values> values;
    @Data
    public static class  Values implements Serializable {
        private String empty;
        private String id;
        private String name;
    }
}
相关文章
|
7天前
|
存储 安全 Java
Java语言注解(Annotations)的技术性探索
Java语言注解(Annotations)的技术性探索
|
3天前
|
Java 编译器
24. 【Java教程】内部类
24. 【Java教程】内部类
9 2
|
6天前
|
Java 编译器 测试技术
【Java 基础 - 注解机制详细解释】
不能使用关键字extends来继承某个@interface,但注解在编译后,编译器会自动继承java.lang.annotation.Annotation接口. 虽然反编译后发现注解继承了Annotation接口,请记住,即使Java的接口可以实现多继承,但定义注解时依然无法使用extends关键字继承@interface。 区别于注解的继承,被注解的子类继承父类注解可以用@Inherited: 如果某个类使用了被@Inherited修饰的Annotation,则其子类将自动具有该注解。
|
7天前
|
Java 编译器 API
Java注解(Annotations)技术性文章
Java注解(Annotations)技术性文章
23 0
|
7天前
|
Java 程序员
Java的内部类与匿名类的技术性文章
Java的内部类与匿名类的技术性文章
14 1
|
7天前
|
XML Java 编译器
Java的注解
Java的注解
|
9天前
|
Java
【Java探索之旅】内部类 静态、实例、局部、匿名内部类全面解析
【Java探索之旅】内部类 静态、实例、局部、匿名内部类全面解析
7 0
|
10天前
|
Java
一篇文章理解 Java 内部类
一篇文章理解 Java 内部类
|
13天前
|
Java 编译器 开发者
Java注解(Annotation)技术深入解析
Java注解(Annotation)技术深入解析
410 1
|
13天前
|
Java
一文搞懂内部类(Java)
Java内部类包括成员内部类、静态内部类、局部内部类和匿名内部类。成员内部类能访问外部类的所有成员,可以通过外部类实例创建。静态内部类与外部类实例无关,可直接访问外部类的静态成员。局部内部类仅限方法内使用,能访问最终变量。匿名内部类无名称,常用于一次性实现接口或抽象类,需外部类成员为final。
8 1