提问者:小点点

jackson正在将方法名打印到JSON文件中


我在jackson中遇到了一个奇怪的行为。
任何以is开头的方法名,如ishey,都会使用jackson打印到JSON文件中。 还有人遇到过这种行为吗? 我写了一个玩具程序来说明它

我使用maven作为构建工具。 独立程序在Netbeans 11中运行,但问题仍然存在于maven在命令行中创建的jar中。

操作系统:Oracle Linux Server Release 7.8

package com.hello.jackson;

import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;

public class check {
    public int hello=1;
    public check()  {}

    public boolean isHey()  {
        return true;
    }

    public static void main(String[] args) throws IOException {
        ObjectMapper om = new ObjectMapper();
        check hello = new check();
        om.writeValue(new File("/hariom/.dump/dump1.json"), hello);
    }
}

运行程序时,转储文件的内容为:

{"hello":1,"hey":true}

共1个答案

匿名用户

您可以使用@jsonignore跳过不希望出现在JSON中的方法/字段:

    @JsonIgnore
    public boolean isHey()  {
        return true;
    }

但通常最好将数据对象和功能分开。 一方面是为了避免这类问题,另一方面也是为了让您可以升级其中一个而不影响另一个。