Java 无法使用Jackson将对象序列化为Json

Java 无法使用Jackson将对象序列化为Json,java,json,serialization,jackson,Java,Json,Serialization,Jackson,我试图使用Jackson序列化Java中的对象,但当我试图序列化它时,它会出现以下错误: No serializer found for class java.io.FileDescriptor and no properties discovered to create BeanSerializer 下面是我试图序列化的类: public class Repository { public String name; @JsonIgnore // to avoid rec

我试图使用Jackson序列化Java中的对象,但当我试图序列化它时,它会出现以下错误:

No serializer found for class java.io.FileDescriptor and no properties discovered to create BeanSerializer

下面是我试图序列化的类:

public class Repository {
    public String name;
    @JsonIgnore   // to avoid recursive calls
    public ArrayList<UserRole> contributors = new ArrayList<UserRole>();
    public User self;
    public ArrayList<FileInfo> files;
    public RepositoryType repositoryType;
    public String path;
}

看起来您的一个类具有
java.io.FileDescriptor
引用

默认情况下,Jackson将只处理公共字段或具有公共getter方法的字段–序列化所有字段都为私有或包私有的实体将失败

如果查看
java.io.FileDescriptor
的源代码,您可以 存在没有公共getter的私有字段

您应该配置
objectMapper
可见性,以允许访问私有字段

// For jackson 2.*
objectMapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);

// For jackson lower than 2
objectMapper.setVisibility(JsonMethod.FIELD, Visibility.ANY);

我在将对象发送到Thymeleaf模板时遇到了问题,它在序列化时给了我异常“StackOverflowerError”,而您的注释“@JsonIgnore//以避免递归调用”解决了我的问题。谢谢

什么是
FileInfo
?你希望Jackson如何序列化它?为什么Jackson不应该序列化它?当我将对象传递给序列化程序时,“文件”字段为空。谢谢,我没有使用fileDescriptro,但将ObjectWriter更改为ObjectMapper并设置可见性解决了此问题。这并没有提供问题的答案。您可以,也可以参考页面右侧的相关和链接问题来找到答案。如果您有一个相关但不同的问题,并包含指向此问题的链接以帮助提供上下文。见:
// For jackson 2.*
objectMapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);

// For jackson lower than 2
objectMapper.setVisibility(JsonMethod.FIELD, Visibility.ANY);