使用杰克逊2.1,如何禁用fail_on_empty beans
错误消息似乎要我禁用的消息?
我以为这只是世界上最简单的事情,但是该死了,而且太晚了,我还没有找到一个简单的教程或任何特别明显的东西api
。SerializationFactory
?他们为什么要使它如此直观,然后使错误消息看起来如此简单?
虽然我做喜欢的错误讯息,我的意思是,它比NPE更好。
我假设有一种使用注释的方法-但是我根本不希望将它们用于我正在做的简单工作!
Answers:
我相信,您可以按班级或全球范围内进行此操作。
对于每个类,请尝试在类声明上方使用@JsonSerialize。
对于映射器,这是一个示例:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
// do various things, perhaps:
String someJsonString = mapper.writeValueAsString(someClassInstance);
SomeClass someClassInstance = mapper.readValue(someJsonString, SomeClass.class)
下面的StackOverflow链接也有一个Spring项目的示例。
对于使用Jersey的REST,我不记得脑子顶了,但是我相信这是相似的。
我挖了几个链接:(由于Codehaus关闭,已编辑了第一个链接)。
@JsonSerialize
禁用FAIL_ON_EMPTY_BEANS
类声明的例子吗?
如果您希望获取不带任何其他字段的JSON对象-请将此注释添加到您的类中,它对我来说非常理想。
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
您还可以在application.properties文件中添加此行,但是它将为JSON添加一个额外的字段。
spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false
要解决此问题,请按如下所示配置您的JsonDataFormat类
ObjectMapper mapper = new ObjectMapper();
mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
几乎等于
mapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);
ObjectMapper mapper = new ObjectMapper();
你好
当我使用 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)
我的json对象值变成''响应中的角度页面空白
仅在以下设置的帮助下解决
mapper.setVisibility(mapper.getSerializationConfig().getDefaultVisibilityChecker().
withFieldVisibility(JsonAutoDetect.Visibility.ANY).withGetterVisibility(JsonAutoDetect.Visibility.NONE)
.withSetterVisibility(JsonAutoDetect.Visibility.NONE)
.withCreatorVisibility(JsonAutoDetect.Visibility.NONE));
就我而言,我不需要禁用它,而不得不将这段代码放在我的类之上:(这解决了我的问题)
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)//this is what was added
@Value //this was there already
@Builder//this was there already
public class NameOfClass {
//some code in here.
}