8

因此,我知道您可以使用@Value注释将 json 值解析为枚举,但是如果 json 中的值与任何用@Value. 例如,假设一个 api 决定添加一个您的客户不知道的新类型。它的值是否设置为 null,还是有异常?有没有办法将枚举值设置为默认捕获所有值?

4

1 回答 1

2

根据这个谷歌群组的帖子,你会得到NullPointerException

编辑

参考内容:

我有一个名为 Job 的对象,其中包含一个包含 API 的枚举字段 statusCode。该枚举使用@Value 正确注释,只要该枚举处理所有可能在 status_code 字段中返回的可能值,json 解析就可以正常工作。

public static class Job {

    @Key("status_code")
    public JobStatus statusCode;
}

public enum JobStatus {

    @Value("starting")
    STARTING
}

但是,如果在该字段中返回未知值,那么我会得到一个

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 对象。有没有办法做到这一点?

于 2015-04-27T06:29:44.700 回答