8

@Valueしたがって、アノテーションを使用して json 値を列挙型に解析できることは承知していますが、json の値が@Value. たとえば、API が、クライアントが認識していない新しい型を追加することを決定したとします。その値は null に設定されますか、それとも例外がありますか? enum 値をデフォルトの catch all 値として設定する方法はありますか?

4

1 に答える 1

2

このGoogleグループの投稿によると、あなたはNullPointerException.

編集

参考にした内容:

API を保持する enum フィールド statusCode を持つ Job というオブジェクトがあります。その列挙型には @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)

不明な値が戻ってきた場合に、例外をスローして Job オブジェクトを返さないのではなく、null として処理するように、このコードを堅牢にしたいと考えています。これを行う方法はありますか?

于 2015-04-27T06:29:44.700 に答える