retrofit 2, экранирование двойных кавычек

161
05 октября 2018, 02:30

Имеется строка вида {"asdasd":"adsasd"}. Формируется данная строка с помощью символа экранирования . Имеется POST запрос, где в качестве body используется вышеуказанная строка. Проблема в том что в body почему то отображаются все символы экранирования. - {\"asdasd\":\"adsasd\"} Соответственно запрос завершается с ошибкой из за неверного формата данных. Подскажите в чем причина отображения символов экранирования и как можно это исправить?

@POST("userItem/v2/update")
Call<MyResponse> updateItems(@Query("Token") String token, @Body String item);

 executeRequestWithCallback(mSyncApi.updateItems(token,itemJson.toString()), response -> {
        sendMessage(response, action);
    });
Answer 1

Проблема в том, что обычный JSON в виде строки нельзя отправлять (если я не ошибаюсь)

у вас есть 2 пути решения данной проблемы

  1. FieldMap

    @POST("userItem/v2/update")
    Call<MyResponse> updateItems(
        @Query("Token") String token, 
        @FieldMap Map<String, String> fields);
    

    и вы заполняете fields как

    Map<String, String> fields = new HashMap<>(); 
    fields.put("asdasd", "asdasd"); 
    

    и передаете в ваш POST в поле fields

  2. Body

    Для этого нужно создать класс c нужными вам полями и заполнить их

    class MyPostRequestBody  {
    String asdasd; 
     .....  
    }
    @POST("userItem/v2/update")
    Call<MyResponse> updateItems(
        @Query("Token") String token, 
        @Body MyPostRequestBody body);
    
Answer 2

Попробуйте так @Body HashMap<String, Object> body
Где ключ/значение - это {"asdasd":"adsasd"}

@POST("userItem/v2/update")
Call<MyResponse> updateItems(@Query("Token") String token, @Body HashMap<String, Object> body);
READ ALSO
Перерисовка маркеров google maps api

Перерисовка маркеров google maps api

Имеется класс, реализующий поиск ближайших мест на карте путем отправки запроса и получения результатов в jsonЗапросы отправляются и получаются...

188
Retrofit2 Android Java

Retrofit2 Android Java

ЗдраствуйтеНе как не могу вникнуть как отправлять изоброжения на сервер с помощью retrofit2

155
Лямбда-выражения в Java [дубликат]

Лямбда-выражения в Java [дубликат]

На данный вопрос уже ответили:

168