Я сериализую строку json в простой Java-объект, используя класс ObjectMapper Джексона.ObjectMapper генерирует исключение
строка json, которую я пытаюсь десериализовать, это
String input="{\"id\":\"30329\",\"appId\":\"3301\",\"nodeId\":1556537156187,\"data\":\"select id,obt_marks,'\\\\m' as dummy from ltc_test_1\"}";
значение для ключа данных, содержащее \, которое вызывает проблему, это способ избежать этого.я хочу, чтобы это значение было в моем POJO. Оно может работать, заменяя каждое вхождение \ на \\, чтобы строка выглядела как
\ "data \": \ "select id, obt_marks, '\\\\ m' какпустышка из ltc_test_1 \ "
Вопрос: Как этого можно добиться с помощью Java, есть ли какие-либо настройки в objectMapper или Jackson для решения этой проблемы?
Ниже приведено pojo, которое я получу после десериализации
public class WorkflowProcessInfo {
private Long id;
private Long appId;
private Long nodeId;
private String data;
}
////Code I am using for deserialization
ObjectMapper mapper = new ObjectMapper();
mapper.configure(Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER, false);
mapper.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
mapper.configure(Feature.ALLOW_SINGLE_QUOTES, true); mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY,
true);
mapper.setSerializationInclusion(Include.NON_NULL);
try{
return mapper.readValue(inputJson, WorkflowProcessInfo.class);
}catch(Exception e){
syso(e.getMessage())}
Я ожидаю, что WorkflowProcessInfo
объект со значениями, представленными в значении json, атрибут данных pojo должен выглядеть следующим образом
WorkflowProcessInfo.data="select id,obt_marks,'\\m' as dummy from ltc_test_1"
вместо этого я получаю исключение ниже
com.fasterxml.jackson.core.JsonParseException: Нераспознанный экранирующий символ 'm' (код 109) в [Source: java.io.StringReader@1ea9f6af;строка: 1, столбец: 84]