为什么 Jackson 字符串不显示 int 值?

Why does Jackson string do not show int values?

我正在努力了解杰克逊,因此不得不问你一件事。

在下面的示例中,我有两个 类。其中之一 - 要转换为 JSON 的对象,另一个 - 主要方法。 我知道 Jackson 需要默认构造函数,但决定进行试验。我有两个构造函数。 所以问题是——为什么我的输出 {"name":"Lion"} 和 int 值根本看不到?

public class Lion extends AbstractCat {
    int age;
    public String name;
            
    public Lion(int age, String name) {
        this.age = age;
        this.name = name;
    }
            
    public Lion() {};
            
}
public class Var {
            
    public static void main(String[] args) throws IOException, JAXBException {
            
        Lion lion = new Lion(32,"Lion");
        System.out.println(converToJSON(lion));
    }
        
    public static String converToJSON(Object o) {
        ObjectMapper objectMapper = new ObjectMapper();
        StringWriter stringWriter = new StringWriter();
        try {
            objectMapper.writeValue(stringWriter,o);
            
        } catch (IOException e) {
            e.printStackTrace();
        }
        return stringWriter.toString();
    }
}

Jackson 忽略 age,因为它是私有的。您可以制作 age public 或添加 public getter 方法(即 public int getAge() { return age; })。后者通常是首选变体,因为 public 字段暴露了您的 类 内部结构。