Я хочу прочитать результат метода GET служб REST с использованием клиентского приложения, которое я создаю с использованием HttpUrlConnection. Этот метод возвращает информацию о пользователе. После прочтения я хочу создать объект Тип пользователя со всей информацией этого Пользователя. Я думаю, что мне нужно сначала преобразовать его в JSON, верно? Я использую GSON.Создайте объект из JSON (GSON: java.lang.IllegalStateException: ожидается BEGIN_OBJECT, но был STRING)
Что у меня есть:
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);
}
Когда я первый отпечаток, я получаю:
{"userID":"user2","isMale":false,"isObject":false,"telephone":"+911111111","email":"[email protected]","birthdate":"2012-08-01","firstName":"Maria","lastName":"Silva","isocountrycode":"PT"}
Когда я делаю вторую печать, я получаю:
"{\"userID\":\"user2\",\"isMale\":false,\"isObject\":false,\"telephone\":\"+911111111\",\"email\":\"[email protected]\",\"birthdate\":\"2012-08-01\",\"firstName\":\"Maria\",\"lastName\":\"Silva\",\"isocountrycode\":\"PT\"}"
Но когда я пытаюсь int объект User Я получаю эту ошибку:
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
Можете ли вы сказать мне, что я делаю неправильно? Все поля объектов пользователя были заполнены с использованием этого класса 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;
(...)
}
Та же проблема, я получаю прямо сейчас? Как вы решили проблему? – nida