Имеется:
Создаю объект Retrofit
:
Retrofit service = new Retrofit.Builder()
.baseUrl("http://192.168.0.3/") // адрес WebApi
.addConverterFactory(GsonConverterFactory.create())
.build();
В коде вызываю нужный мне метод API, в API данные приходят корректно.
В качестве теста возвращаю пришедшую в контроллер модель в json
Action
[HttpPost]
public JsonResult GetUser(UserModel model)
{
return Json(JsonConvert.SerializeObject(model));
}
Model
public class UserModel
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("email")]
public string Email { get; set; }
[JsonProperty("password")]
public string Password { get; set; }
[JsonProperty("name")]
public string name { get; set; }
[JsonProperty("device_id")]
public string DeviceId { get; set; }
[JsonProperty("register_date")]
public string RegisterDate { get; set; }
[JsonProperty("updated_date")]
public string UpdatedDate { get; set; }
}
Через POSTMAN получаю корректный json
.
Однако в Android получаю Exception
:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:224)
at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:37)
at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:25)
at retrofit2.ServiceMethod.toResponse(ServiceMethod.java:117)
at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:211)
at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:106)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:133)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:213)
... 10 more
Почему на Android не парсится json
пришедший с API?
UPD
Ответ от API:
{\"id\":1,\"email\":\"myemail@gmail.com\",\"password\":\"1234\",\"name\":null,\"device_id\":null,\"register_date\":null,\"updated_date\":null}
В Android в обработчике callback вываливаюсь сюда:
@Override
public void onFailure(Call<UserModel> call, Throwable t) {
t.printStackTrace();
}
Согласно этому валидатору в ответе сервера невалидный JSON - лишние экранирующие слэши. Вот здесь описывают аналогичную проблему и советуют убрать экранирующие слэши
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как сделать так чтобы изображения разного размера в галереи отображались с одинаковой высотой и ширинойТо есть чтобы они автоматически...
Добрый день! как можно убрать белые полосы с картинок тут ссылка на страничку галереи