com.google.gson.stream.MalformedJsonException: Expected value at line 1 column 91 path $..photo
столкнулся с проблемой во время работы с API: почему-то вылетает ошибка при десириализации.
Как можно решить проблему? Работаю с retofit2. Вероятно ошибка из-за "/" в пути к фото: photo=/media/hac1.jpg (Если ошибка глупая, сильно не ругайтесь, я новичок).
Заранее спасибо)
Шапка:
private final String Url = "http://***.**.***.***/api/";
private Gson gson = new GsonBuilder().create();
private Retrofit retrofit = new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create(gson)).baseUrl(Url).build();
private Link api = retrofit.create(Link.class);
Метод:
public void userInfo() {
sharedPreferences = getSharedPreferences(XML_USER, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
Call<Map> detail = api.getUserDetails("Token " + sharedPreferences.getString(SAVED_TOKEN, ""));
try {
Response response = detail.execute();
if (response.isSuccessful()) {
Log.e("RESPONSE", "body " + response.body());
Map<String, String> map = gson.fromJson(response.body().toString(), Map.class);
Log.e("RESPONSE", "map " + map);
System.out.println(map.toString());
for (Map.Entry e : map.entrySet()) {
if (e.getKey().equals("username")) {
editor.putString(SAVED_USERNAME, e.getValue().toString());
editor.apply();
} else if (e.getKey().equals("email")) {
editor.putString(SAVED_EMAIL, e.getValue().toString());
editor.apply();
} else if (e.getKey().equals("id")) {
editor.putString(SAVED_ID, e.getValue().toString());
editor.apply();
}
}
// Log.e("mLog", "onClick: s " + String.valueOf(map.get("profile")));
} else {
Log.e("RESPONSE", "error " + response.code());
}
} catch (IOException e) {
Log.e("TAG", "onCreate: " + "error");
e.printStackTrace();
}
}
log:
2020-04-24 15:16:19.134 20168-20244/? E/RESPONSE: body {id=11.0, username=Ilnur, [email protected], is_active=true, profile={schedules=0, photo=/media/hac1.jpg}}
2020-04-24 15:16:19.136 20168-20244/? E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2
Process: adwantay.studio.application, PID: 20168
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected value at line 1 column 91 path $..photo
at com.google.gson.Gson.fromJson(Gson.java:902)
at com.google.gson.Gson.fromJson(Gson.java:852)
at com.google.gson.Gson.fromJson(Gson.java:801)
at com.google.gson.Gson.fromJson(Gson.java:773)
at adwantay.studio.dindon.MainActivity.userInfo(MainActivity.java:697)
at adwantay.studio.dindon.MainActivity$1.run(MainActivity.java:158)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: com.google.gson.stream.MalformedJsonException: Expected value at line 1 column 91 path $..photo
at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1559)
at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:590)
at com.google.gson.stream.JsonReader.peek(JsonReader.java:425)
at com.google.gson.internal.bind.ObjectTypeAdapter.read(ObjectTypeAdapter.java:55)
at com.google.gson.internal.bind.ObjectTypeAdapter.read(ObjectTypeAdapter.java:70)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:187)
at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:145)
at com.google.gson.Gson.fromJson(Gson.java:887)
at com.google.gson.Gson.fromJson(Gson.java:852)
at com.google.gson.Gson.fromJson(Gson.java:801)
at com.google.gson.Gson.fromJson(Gson.java:773)
at adwantay.studio.dindon.MainActivity.userInfo(MainActivity.java:697)
at adwantay.studio.dindon.MainActivity$1.run(MainActivity.java:158)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
2020-04-24 15:16:19.331 20168-20279/? E/libEGL: validate_display:99 error 3008 (EGL_BAD_DISPLAY)