我有一个 POJO 定义如下:
@Value
public class Abc {
@NonNull
private final String id;
@NonNull
private final Integer id2;
@NonNull
private final List<String> data;
@NonNull
private final String otherData;
}
Run Code Online (Sandbox Code Playgroud)
我在做的时候,
GSON.fromJson(str, Abc.class);
Run Code Online (Sandbox Code Playgroud)
与 str 为:
{
"id": "dsada",
"id2": 12,
"data": ["dsadsa"]
}
Run Code Online (Sandbox Code Playgroud)
在此,没有 otherData 字段。即便如此,GSON.fromJson 也没有失败。为什么会这样?那么,将该字段标记为@NonNull 是否有任何意义?
在使用GSON API将Java对象转换为Json字符串时,如果任何带注释的属性为null,我还希望失败此Json转换.
例如
public class Order{
@SerializedName("orderId")
@Expose
@Required
private Integer id;
//getter & setter available for id
}
Run Code Online (Sandbox Code Playgroud)
就像我在做的那样
Order order = new Order();
JSONObject jsonobj = new JSONObject(gson.toJson(order));
Run Code Online (Sandbox Code Playgroud)
如果任何@Required属性为null,我想让上面的Java失败到Json转换这是否可以使用GSON?