java处理解析带有反斜杠的json
作者:火_
在Java中操作JSON数据是一项常见的任务,其中一个常见的问题是如何在JSON字符串中包含反斜杠,本文主要介绍了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解析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!