Gson desserializa a matriz JSON com vários tipos de objetos

Eu tenho alguns JSON estranhos como:

[
  {
    "type":"0",
    "value":"my string"
  },
  {
    "type":"1",
    "value":42
  },
  {
    "type":"2",
    "value": {
    }
  }
]

Com base em algum campo, o objeto na matriz é de um determinado tipo. Usando o Gson, meu pensamento é ter um TypeAdapterFactory que envie adaptadores delegados para esses tipos específicos para um TypeAdapter, mas estou empolgado em entender uma boa maneira de ler esse campo "tipo" para saber qual tipo criar. No TypeAdapter,

Object read(JsonReader in) throws IOException {
  String type = in.nextString();
  switch (type) {
    // delegate to creating certain types.
  }
}

assumiria que o campo "type" vem em primeiro lugar no meu JSON. Existe uma maneira decente de remover essa suposição?

questionAnswers(1)

yourAnswerToTheQuestion