场景:接收第三方请求结果,将json转化成DTO的时候报错
报错代码如下
JSONObject result = JSON.parseObject(httpResult.getValue());
if (Objects.nonNull(result) && "00000".equals(result.get("code"))) {
FullConfigCheckDTO fullConfigCheckDTO = JSON.parseObject(JSON.toJSONString(result.get("message")), FullConfigCheckDTO.class);
return fullConfigCheckDTO ;
}
报错信息如下:
com.alibaba.fastjson.JSONException: syntax error, expect {, actual string, pos 0, fastjson-version 1.2.47
打印后发现JSON.parseObject解析的结果数据中会有反斜杠,下面获取的message在通过JSON.toJSONString(result.get("message")去转化成string得到的数据还是有反斜杠的数据,导致数据解析失败
修正后代码如下:
JSONObject result = JSON.parseObject(httpResult.getValue());
if (Objects.nonNull(result) && "00000".equals(result.get("code"))) {
String a =result.get("message").toString();
log.info("a返回信息{}",a);
FullConfigCheckDTO fullConfigCheckDTO = JSON.parseObject( result.get("message").toString(), FullConfigCheckDTO.class);
return fullConfigCheckDTO ;
}
再看打印直接用toString得到的数据反斜杠消失了,解析正常。