Je souhaite lire le résultat d'une méthode GET de services REST à l'aide d'une application cliente que je compile à l'aide de HttpUrlConnection. Cette méthode renvoie des informations sur un utilisateur. Après l'avoir lu, je veux créer un objet du Type d'utilisateur, avec toutes les informations de cet utilisateur rempli. Je pense que je dois d'abord le convertir en JSON, non? J'utilise GSON.Création d'un objet à partir de JSON (GSON: java.lang.IllegalStateException: BEGIN_OBJECT attendu mais STRING)
Ce que j'est:
if(urlConnection.getResponseCode()==200)
{
String response ="";
Scanner inStream = new Scanner(urlConnection.getInputStream());
while(inStream.hasNextLine())
response+=(inStream.nextLine());
System.out.println(response);
//JSON
Gson gson = new Gson();
String json = gson.toJson(response);
System.out.println(json);
// User Object
User object = new User();
object = gson.fromJson(json, User.class);
System.out.println(object);
}
Quand je fais la première impression, je reçois:
{"userID":"user2","isMale":false,"isObject":false,"telephone":"+911111111","email":"[email protected]","birthdate":"2012-08-01","firstName":"Maria","lastName":"Silva","isocountrycode":"PT"}
Quand je fais la deuxième impression, je reçois:
"{\"userID\":\"user2\",\"isMale\":false,\"isObject\":false,\"telephone\":\"+911111111\",\"email\":\"[email protected]\",\"birthdate\":\"2012-08-01\",\"firstName\":\"Maria\",\"lastName\":\"Silva\",\"isocountrycode\":\"PT\"}"
Mais quand j'essaie de pr Dans l'objet utilisateur, je reçois cette erreur:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 226
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176)
at com.google.gson.Gson.fromJson(Gson.java:795)
at com.google.gson.Gson.fromJson(Gson.java:761)
at com.google.gson.Gson.fromJson(Gson.java:710)
at com.google.gson.Gson.fromJson(Gson.java:682)
at httpURLconnection.UserGetUserInfo.main(UserGetUserInfo.java:70)
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 226
at com.google.gson.stream.JsonReader.expect(JsonReader.java:339)
at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:322)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:165)
... 5 more
Pouvez-vous me dire ce que je fais mal? Tous les champs d'objet Utilisateur ont été remplis à l'aide de cette classe User.
classe User:
public class User {
String userID = null;
boolean isMale = false;
boolean isObject = false;
String Telephone = null;
String Email = null;
Date Birthdate = null;
String FirstName = null;
String LastName = null;
String ISOcountrycode = null;
(...)
}
Le même problème que je reçois en ce moment? Comment avez-vous résolu votre problème? – nida