J'ai un fichier JSON comme ceci:
[
{
"number": "3",
"title": "hello_world",
}, {
"number": "2",
"title": "hello_world",
}
]
Avant quand les fichiers avaient un élément racine, j'utiliserais:
Wrapper w = gson.fromJson(JSONSTRING, Wrapper.class);
je ne sais pas comment coder la classe Wrapper
car l’élément racine est un tableau.
J'ai essayé d'utiliser:
Wrapper[] wrapper = gson.fromJson(jsonLine, Wrapper[].class);
avec:
public class Wrapper{
String number;
String title;
}
Mais je n'ai pas eu de chance. Sinon, comment puis-je lire ceci en utilisant cette méthode?
P.S j'ai ceci pour travailler en utilisant:
JsonArray entries = (JsonArray) new JsonParser().parse(jsonLine);
String title = ((JsonObject)entries.get(0)).get("title");
Mais je préférerais savoir comment faire (si possible) avec les deux méthodes.
Le problème est causé par une virgule à la fin de (dans votre cas each =) objet JSON placé dans le tableau:
{
"number": "...",
"title": ".." , //<- see that comma?
}
Si vous les supprimez, vos données deviendront
[
{
"number": "3",
"title": "hello_world"
}, {
"number": "2",
"title": "hello_world"
}
]
et
Wrapper[] data = gson.fromJson(jElement, Wrapper[].class);
devrait bien fonctionner.
Gson gson = new Gson();
Wrapper[] arr = gson.fromJson(str, Wrapper[].class);
class Wrapper{
int number;
String title;
}
Semble bien fonctionner. Mais il y a une supplémentaire ,
Virgule dans votre chaîne.
[
{
"number" : "3",
"title" : "hello_world"
},
{
"number" : "2",
"title" : "hello_world"
}
]
public static <T> List<T> toList(String json, Class<T> clazz) {
if (null == json) {
return null;
}
Gson gson = new Gson();
return gson.fromJson(json, new TypeToken<T>(){}.getType());
}
exemple d'appel:
List<Specifications> objects = GsonUtils.toList(products, Specifications.class);