我有以下类结构:
public Class A{
private int a;
private String b;
private B binst;
}
public Class B{
private int x;
private String y;
}
定义了所有的getter和setter。我使用Java反射来调用如下:
method.invoke(ClassAObj, ClassBObj);
现在,在调用此选项之前,我只设置了y
而不是x
。我将此ClassAObj转换为JSON,并发现0
的默认值设置为x
,它出现在JSON中。我不想让x
字段出现在JSON中。我该怎样避免这个?
有趣的是,如果我设置x
而不是y
,则标记y
不会出现在JSON中。
答案 0 :(得分:2)
因为int
是一个原语,即:不可为空,通常Json
解析器会丢弃空值。
您可以使用reference
类型Integer
,其默认值为null
。
public Class B{
private Integer x;
private String y;
}