java處理解析帶有反斜杠的json
json處理依賴:fastjson
問題:
對一個(gè)json字符串轉(zhuǎn)換成fastjson中的JSONObject對象的時(shí)候如果該json字符串中帶有多余的反斜杠,可能會(huì)導(dǎo)致解析失?。?/p>
舉例:
//現(xiàn)有一個(gè)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);
這時(shí)候就會(huì)報(bào)錯(cuò)
這種簡單的反斜杠處理有兩種方式:
處理方法1:
簡單粗暴去掉字符串中的反斜杠:
//現(xiàn)有一個(gè)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:
解析前反轉(zhuǎn)義一下
//現(xiàn)有一個(gè)json字符串 String s = "{\"job\":{\"setting\":{\"restore\":{\"maxRowNumForCheckpoint\":0,\"isRestore\":false,\"restoreColumnName\":\"\",\"restoreColumnIndex\":0},\"errorLimit\":{\"record\":100},\"speed\":{\"bytes\":0,\"channel\":1}}}}"; //解析前反轉(zhuǎn)義該json字符串 s = StringEscapeUtils.unescapeJavaScript(s); //對該字符串做處理 JSONObject jsonObject = JSONObject.parseObject(s); System.out.println(jsonObject);
如果這兩種方法都不行,或者說json中的反斜杠情況略微復(fù)雜,去除所有反斜杠后會(huì)讓json字符串的本意發(fā)生變化的話,那可以試試下面的方法
處理方法3(上述兩種方法不生效再考慮):
//現(xiàn)有一個(gè)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);
到此這篇關(guān)于java處理解析帶有反斜杠的json的文章就介紹到這了,更多相關(guān)java 反斜杠的json解析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java將json字符串轉(zhuǎn)換為數(shù)組的幾種方法
- java實(shí)現(xiàn)解析json復(fù)雜數(shù)據(jù)的方法詳解
- java實(shí)現(xiàn)解析json復(fù)雜數(shù)據(jù)的第三種思路詳解
- java解析json復(fù)雜數(shù)據(jù)的方法詳解
- java中對象和JSON格式的轉(zhuǎn)換方法代碼
- Java實(shí)現(xiàn)將枚舉類轉(zhuǎn)為json并返回給前端
- Java使用Fastjson進(jìn)行JSON數(shù)據(jù)操作教程詳解
- java實(shí)現(xiàn)XML與JSON轉(zhuǎn)換的便捷實(shí)用方法
相關(guān)文章
Java編程實(shí)現(xiàn)時(shí)間和時(shí)間戳相互轉(zhuǎn)換實(shí)例
這篇文章主要介紹了什么是時(shí)間戳,以及Java編程實(shí)現(xiàn)時(shí)間和時(shí)間戳相互轉(zhuǎn)換實(shí)例,具有一定的參考價(jià)值,需要的朋友可以了解下。2017-09-09Spring Boot應(yīng)用配置常用相關(guān)視圖解析器詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot應(yīng)用配置常用相關(guān)視圖解析器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12Spring Boot示例分析講解自動(dòng)化裝配機(jī)制核心注解
這篇文章主要分析了Spring Boot 自動(dòng)化裝配機(jī)制核心注解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-07-07springboot中使用Hibernate-Validation校驗(yàn)參數(shù)詳解
這篇文章主要為大家介紹了springboot中使用Hibernate-Validation校驗(yàn)參數(shù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07Spring整合redis(jedis)實(shí)現(xiàn)Session共享的過程
這篇文章主要介紹了Spring整合redis(jedis)實(shí)現(xiàn)Session共享,需要的朋友可以參考下2018-06-06SpringBoot集成ShedLock實(shí)現(xiàn)分布式定時(shí)任務(wù)
ShedLock 是一個(gè) Java 庫,通常用于分布式系統(tǒng)中,確保定時(shí)任務(wù)(Scheduled Tasks)在集群環(huán)境下只被某一個(gè)實(shí)例執(zhí)行一次,它通過在共享資源中添加鎖的方式,本文給大家介紹了SpringBoot集成ShedLock實(shí)現(xiàn)分布式定時(shí)任務(wù),需要的朋友可以參考下2024-11-11java中@ConfigurationProperties失效的問題解決
在Java開發(fā)中,使用@ConfigurationProperties注解讀取配置文件時(shí),如果配置類中的屬性設(shè)置為static,將無法正確讀取配置值,本文就來介紹一下具體解決方法,感興趣的可以了解一下2024-09-09