java处理解析带有反斜杠的json
json处理依赖:fastjson
问题:
对一个json字符串转换成fastjson中的JSONObject对象的时候如果该json字符串中带有多余的反斜杠,可能会导致解析失败;
举例:
//现有一个json字符串
String s = "{\"job\":{\"setting\":{\"restore\":{\"maxRowNumForCheckpoint\":0,\"isRestore\":false,\"restoreColumnName\":\"\",\"restoreColumnIndex\":0},\"errorLimit\":{\"record\":100},\"speed\":{\"bytes\":0,\"channel\":1}}}}";
//对该字符串做处理
JSONObject jsonObject = JSONObject.parseObject(s);
System.out.println(jsonObject);这时候就会报错
这种简单的反斜杠处理有两种方式:
处理方法1:
简单粗暴去掉字符串中的反斜杠:
//现有一个json字符串
String s = "{\"job\":{\"setting\":{\"restore\":{\"maxRowNumForCheckpoint\":0,\"isRestore\":false,\"restoreColumnName\":\"\",\"restoreColumnIndex\":0},\"errorLimit\":{\"record\":100},\"speed\":{\"bytes\":0,\"channel\":1}}}}";
//解析前去除反斜杠,将反斜杠替换为空字符串
s = StringUtils.replace(s, "\\", "");
//对该字符串做处理
JSONObject jsonObject = JSONObject.parseObject(s);
System.out.println(jsonObject);处理方法2:
解析前反转义一下
//现有一个json字符串
String s = "{\"job\":{\"setting\":{\"restore\":{\"maxRowNumForCheckpoint\":0,\"isRestore\":false,\"restoreColumnName\":\"\",\"restoreColumnIndex\":0},\"errorLimit\":{\"record\":100},\"speed\":{\"bytes\":0,\"channel\":1}}}}";
//解析前反转义该json字符串
s = StringEscapeUtils.unescapeJavaScript(s);
//对该字符串做处理
JSONObject jsonObject = JSONObject.parseObject(s);
System.out.println(jsonObject);如果这两种方法都不行,或者说json中的反斜杠情况略微复杂,去除所有反斜杠后会让json字符串的本意发生变化的话,那可以试试下面的方法
处理方法3(上述两种方法不生效再考虑):
//现有一个json字符串
String s = "{\"job\":{\"setting\":{\"restore\":{\"maxRowNumForCheckpoint\":0,\"isRestore\":false,\"restoreColumnName\":\"\",\"restoreColumnIndex\":0},\"errorLimit\":{\"record\":100},\"speed\":{\"bytes\":0,\"channel\":1}}}}";
//解析前处理json字符串
s = new String(s);
//对该字符串做处理
JSONObject jsonObject = JSONObject.parseObject(s);
System.out.println(jsonObject);到此这篇关于java处理解析带有反斜杠的json的文章就介绍到这了,更多相关java 反斜杠的json解析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
spring框架cacheAnnotation缓存注释声明解析
这篇文章主要介绍了spring框架中cacheAnnotation注释声明缓存解析示例有需要的朋友可以借鉴参考下,希望能够有所帮助2021-10-10
Spring Security 密码验证动态加盐的验证处理方法
小编最近在改造项目,需要将gateway整合security在一起进行认证和鉴权,今天小编给大家分享Spring Security 密码验证动态加盐的验证处理方法,感兴趣的朋友一起看看吧2021-06-06
intellij idea中spring boot properties文件不能自动提示问题解决
这篇文章主要介绍了intellij idea中spring boot properties文件不能自动提示问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-02-02
SpringCloud实现Redis在各个微服务的Session共享问题
Redis是运行在内存中,查取速度很快。本文重点给大家介绍SpringCloud实现Redis在各个微服务的Session共享,感兴趣的朋友一起看看吧2018-08-08


最新评论