Usando a biblioteca Gson, como faço para converter uma string JSON em uma ArrayList
classe personalizada JsonLog
? Basicamente, JsonLog
é uma interface implementada por diferentes tipos de logs criados pelo meu aplicativo Android - logs de SMS, logs de chamadas, logs de dados - e essa ArrayList
é uma coleção de todos eles. Continuo recebendo um erro na linha 6.
public static void log(File destination, JsonLog log) {
Collection<JsonLog> logs = null;
if (destination.exists()) {
Gson gson = new Gson();
BufferedReader br = new BufferedReader(new FileReader(destination));
logs = gson.fromJson(br, ArrayList<JsonLog>.class); // line 6
// logs.add(log);
// serialize "logs" again
}
}
Parece que o compilador não entende que estou me referindo a um tipo ArrayList
. O que eu faço?
Respostas:
Você pode usar o TypeToken para carregar a sequência json em um objeto personalizado.
Documentação:
Kotlin:
Se você precisar fazer isso no Kotlin, faça o seguinte:
Ou você pode ver esta resposta para várias alternativas.
fonte
{ }
antes.getType()
Sua amostra JSON é:
então, se você deseja salvar a lista de módulos dos módulos em suas SharedPrefrences, então:
1- converterá sua lista de matriz retornada para o formato json usando este método
2- Salve-o em prefreneces compartilhados
3- para recuperá-lo a qualquer momento, obtenha o JsonString de Preferências compartilhadas como essa
4- converta-o novamente para a lista de arrays
Essa solução também é possível se você deseja analisar o ArrayList of Objects. Espero que seja útil usando a Biblioteca Gson .
fonte
Se você deseja usar Arrays, é bem simples.
Forneça o
JsonLog
como uma matrizJsonLog[].class
fonte
OU
fonte
Por que ninguém escreveu essa maneira simples de converter a string JSON na lista ?
fonte
Eu não tenho certeza sobre o gson, mas é assim que você faz isso com Jon.
{"Jogadores": ["jogador 1", "jogador 2", "jogador 3", "jogador 4", "jogador 5"]}
=================================================
fonte
Você tem uma string como esta.
Em seguida, você pode enviá-lo para ArrayList via Gson, como
Sua classe HotelInfo deve ser assim.
fonte