@ResponseBody
@RequestMapping(value="/getUser")
public JSONObject getContent(@ReqeustBody User user)
@Data
public class User{
private String username = "administrator";
private String password = "123456";
private Integer age = 18;
}
{
"username":"admin",
"password":"000",
"age":""
}
像这样:
{
"username":"admin",
"password":"000",
"age":18
}
我该怎么办?
您可以定义一个自定义getter属性,在null
的情况下设置默认值。
public Integer getAge() {
if (age == null) {
return 18;
} else {
return this.age;
}
}
请注意,您不能更改setage
方法,因为在本例中没有调用它,事实上没有age
字段通知Jackson调用该方法。
另一种方法是使用自定义构造函数,并使用JSONSetter
注释,其值为nulls.skip
值,该值指示应跳过输入空值且不进行赋值;这通常意味着该属性将有其默认值。
如下:
public class User {
@JsonSetter(nulls = Nulls.SKIP)
private Integer age;
public User() {
this.age = 18;
}
...
}
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>YOURVERSION</version>
</dependency>
我尝试使用以下代码反序列化API中接收的JSON对象: 我的类使用Lombok生成构造函数、getter和setter,如下所示: 这两个属性都应该是可选的,如果没有提供,则使用类定义中指定的默认值。但是,如果我现在尝试反序列化JSON 字段为。根据我的理解,以及我找到的所有示例代码,应该是一个空列表。 编辑:不是重复的,因为我使用的是没有选项的Lombok
我想通过扩展默认的反序列化器来创建自己的反序列化器,在其后面设置更多的值: 如您所见,我还想将此DTO母类重用于其他DTO。 我没有找到任何这样的例子。我真的是世界上第一个 反序列化的“AsUsual”(p,ctxt)应该是什么 我应该使用什么motherclass?JsonDeserializer/StdDeserializer/UntypedObjectDeserializer 反序列化程序会
假设我正在为某个类编写自定义序列化,但希望使用默认方法处理其中一个字段。 那要怎么做? 序列化时,我们有。 但反序列化的相应方法是什么? 请注意以下代码: 如何实现MyOuterDeserializer?
但这只有在保证先设置start的情况下才起作用。
我在Jackson的自定义反序列化程序中有一个问题。我想访问默认序列化程序来填充我要反序列化到的对象。在填充之后,我将执行一些自定义操作,但首先我要使用默认的Jackson行为反序列化对象。 这是我现在有的代码。 我需要的是一种初始化默认反序列化器的方法,这样我就可以在开始我的特殊逻辑之前预填充我的POJO。 当从自定义反序列化程序内调用deserialize时,无论我如何构造序列化程序类,该方法
我有下面的课: 我希望它从Jackson处理的以下JSON中反序列化。 jackson-datatype-joda(https://github.com/fasterxml/jackson-datatype-joda) 自定义序列化程序(公共类JodaDateTimeJsonSerializer扩展JsonSerializer{...}-Spring@ResponseBody Jackson Js