2017-01-19 7 views
3

Я хочу удалить строку из моего ответа retorfit2 POST.Удалить ненужную строку из отклика

Это мой ответ:

/*-secure-{"response":{"response":{"response":{"token":"95a2c5a8","email":"[email protected]","name":"xxx"},"status":true,"code":0.0},"status":200},"status":200}*/ 

Из-за какой-то причине безопасности мой сервер автоматически добавляя строки

/*-secure- и */

: Из-этого, на преобразование в JSON Я получение ниже ошибка:

com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 2 path $ 
+0

Вы могли бы реализовать преобразователь, который действует до GsonConverter. Он удаляет эту защищенную часть в начале и конце, а затем делегирует действительный остаток JSON в фактический конвертер Gson. Джейк Уортон изложил аналогичный подход в своем разговоре: https://youtu.be/t34AQlblSeE?t=27m28s – peitek

+0

@peitek благодарит пользовательский конвертер Gson. –

+0

Можете ли вы опубликовать то, что вы сделали в конце? – FrankR

ответ

2

Мой заказ gson конвертер класс

final class CustomGsonResponseBodyConverter<T> implements Converter<ResponseBody, T> { 
    private final Gson gson; 
    private final TypeAdapter<T> adapter; 
    private Pattern pattern = Pattern.compile("^\\/\\*-secure-\\W(.*)\\*\\/$"); 

    CustomGsonResponseBodyConverter(Gson gson, TypeAdapter<T> adapter) { 
     this.gson = gson; 
     this.adapter = adapter; 
    } 

    @Override 
    public T convert(ResponseBody value) throws IOException { 
     String response = value.string(); 
     System.out.println(response); 
     Matcher matcher = pattern.matcher(response); 

     JsonReader jsonReader = gson.newJsonReader(new StringReader(matcher.group(1))); 
     try { 
      return adapter.read(jsonReader); 
     } finally { 
      value.close(); 
     } 
    } 
} 
+0

спасибо за сообщение ответа. – FrankR

+0

Можете ли вы рассказать мне, как установить этот преобразователь в модификацию –

1
Gson gson = new GsonBuilder() 
    .setLenient() 
    .build(); 
// ... 
.addConverterFactory(GsonConverterFactory.create(gson) 

Пожалуйста, см this

+0

теперь сообщение об ошибке изменено на java.io.EOFException: Конец ввода в строке 2 столбца 318 путь $ –