java處理解析帶有反斜杠的json
json處理依賴:fastjson
問題:
對一個json字符串轉換成fastjson中的JSONObject對象的時候如果該json字符串中帶有多余的反斜杠,可能會導致解析失?。?/p>
舉例:
//現有一個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字符串的本意發(fā)生變化的話,那可以試試下面的方法
處理方法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解析內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springboot中使用Hibernate-Validation校驗參數詳解
這篇文章主要為大家介紹了springboot中使用Hibernate-Validation校驗參數詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
Spring整合redis(jedis)實現Session共享的過程
這篇文章主要介紹了Spring整合redis(jedis)實現Session共享,需要的朋友可以參考下2018-06-06
java中@ConfigurationProperties失效的問題解決
在Java開發(fā)中,使用@ConfigurationProperties注解讀取配置文件時,如果配置類中的屬性設置為static,將無法正確讀取配置值,本文就來介紹一下具體解決方法,感興趣的可以了解一下2024-09-09

