所以,我知道你可以使用@Value注释将json值解析为枚举,但是如果json中的值与注释的任何值都不匹配,那么行为是什么@Value.例如,假设api决定添加客户端不知道的新类型.它的值是否设置为null,或者是否有异常?有没有办法将枚举值设置为默认捕获所有值?
根据这个谷歌小组的帖子,你会得到NullPointerException。
参考内容:
我有一个名为 Job 的对象,其中包含一个包含 API 的枚举字段 statusCode。该枚举已使用 @Value 正确注释,只要枚举处理可能返回到 status_code 字段的所有可能值,json 解析就可以正常工作。
Run Code Online (Sandbox Code Playgroud)public static class Job { @Key("status_code") public JobStatus statusCode; } public enum JobStatus { @Value("starting") STARTING }但是,如果该字段中返回未知值,那么我会得到一个
Run Code Online (Sandbox Code Playgroud)NullPointerException: java.lang.NullPointerException at com.google.api.client.util.Data.parsePrimitiveValue(Data.java:445) at com.google.api.client.json.JsonParser.parseValue(JsonParser.java:795) at com.google.api.client.json.JsonParser.parse(JsonParser.java:438) at com.google.api.client.json.JsonParser.parseValue(JsonParser.java:745) at com.google.api.client.json.JsonParser.parse(JsonParser.java:358) at com.google.api.client.json.JsonParser.parse(JsonParser.java:331) at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:87) at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:81) at com.google.api.client.http.HttpResponse.parseAs(HttpResponse.java:459)我希望这段代码足够健壮,这样如果返回未知值,它将被视为 null,而不是抛出异常并且不返回 Job 对象。有什么办法可以做到这一点吗?