Je suis aux prises avec un peu d'analyse JSON (avec la librairie GSON de Google).JSON Stream analyse les plantages à la fin de l'objet
Voici mon exemple de code minimal:
Gson gson = new Gson();
String line = "{\"method\":\"GET\",\"status\":\"200 - OK\"}";
AnalysisReport report = gson.fromJson(line, AnalysisReport.class); //this works
JsonReader reader = new JsonReader(new StringReader(line));
reader.setLenient(true); //accept malformed input
while (reader.hasNext()) {
report = gson.fromJson(reader, AnalysisReport.class); //this doesn't work
}
reader.close();
Je reçois l'exception suivante: (la chaîne est de 36 caractères de long)
Expected BEGIN_OBJECT but was END_DOCUMENT at line 1 column 37
Mon TEXTILES RAPPORT classe ressemble à ceci:
public class AnalysisReport {
@SerializedName("method")
private String method;
@SerializedName("status")
private String status;
AnalysisReport(){
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getStatus() {
return status;
}
}
Je ne vois pas pourquoi mon code ne fonctionne pas. J'ai suivi le exmaple de Google
= = = = = = EDIT
La méthode reader.hasNext()
retourne toujours true
. Il semble que la méthode ne consomme aucun jeton du flux. Mais d'une manière ou d'une autre se déplace toujours à la fin du flux et échoue à lire des objets.
Le problème était en effet la boucle (facepalm). Cela fonctionne parfaitement bien:
JsonReader reader = new JsonReader(new StringReader(line));
reader.setLenient(true); //accept malformed input
report = gson.fromJson(reader, AnalysisReport.class);
Merci
J'ai été capable de faire le mappage de votre chaîne avec la bibliothèque Jackson Json sans erreur – grsdev7