Tenho um arquivo JSON como este:
[
{
"number": "3",
"title": "hello_world",
}, {
"number": "2",
"title": "hello_world",
}
]
Antes, quando os arquivos tinham um elemento raiz, eu usava:
Wrapper w = gson.fromJson(JSONSTRING, Wrapper.class);
código, mas não consigo pensar em como codificar a Wrapper
classe, pois o elemento raiz é uma matriz.
Eu tentei usar:
Wrapper[] wrapper = gson.fromJson(jsonLine, Wrapper[].class);
com:
public class Wrapper{
String number;
String title;
}
Mas não tive sorte. De que outra forma posso ler isso usando este método?
PS Eu tenho isso para funcionar usando:
JsonArray entries = (JsonArray) new JsonParser().parse(jsonLine);
String title = ((JsonObject)entries.get(0)).get("title");
Mas eu preferiria saber como fazer (se possível) com os dois métodos.
Wrapper[] data = gson.fromJson(jElement, Wrapper[].class);
funcionará bem para mim.Respostas:
O problema é causado por uma vírgula no final de (no seu caso, cada ) objeto JSON colocado na matriz:
Se você removê-los, seus dados se tornarão
e
deve funcionar bem.
fonte
jackson
biblioteca e este comentário, criar array e envolvê-loArrays.asList(..)
é mais rápido do que criar uma lista usando TypeRefence. Não testei com agson
biblioteca, mas pode valer a pena fazer um benchmark.Parece funcionar bem. Mas há uma
,
vírgula extra em sua string.fonte
chamada de amostra:
fonte
GsonUtils
é a aula onde ele colocou seu própriotoList()
método.fonte