我正在使用杰克逊的ObjectMapper类将json字符串反序列化为纯java对象。 ObjectMapper抛出异常
我要反序列化的json字符串
String input="{\"id\":\"30329\",\"appId\":\"3301\",\"nodeId\":1556537156187,\"data\":\"select id,obt_marks,'\\\\m' as dummy from ltc_test_1\"}";
数据键的值包含\,这是导致问题的原因,是其逃避此错误的方法。我想要这个值像我的POJO中一样
它可以通过用\\替换\的出现来工作,因此字符串看起来像
\“ data \”:\“从ltc_test_1 \”中选择id,obt_marks,'\\\\ m'作为虚拟对象
问题:如何使用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的data属性应如下所示
WorkflowProcessInfo.data="select id,obt_marks,'\\m' as dummy from ltc_test_1"
相反,我低于例外情况
com.fasterxml.jackson.core.JsonParseException:无法识别的字符 在[Source:java.io.StringReader@1ea9f6af;中转义'm'(代码109); 行:1,列:84]