Java Json字符串的雙引號(hào)("")括號(hào)如何去掉
我就廢話不多說(shuō)了,大家還是直接看代碼吧~
//自己copy試一下比什么都好public static void main(String[] args) {String json = '['name':'value','value1']'; String t = json.replaceAll(''','');System.out.println('去除雙引號(hào)和斜杠后:'+t);String replaceAll = t.replace('[', '').replace(']','');System.out.println('去除左右中括號(hào)后:'+replaceAll);}
補(bǔ)充知識(shí):java 替換json字符串中間的引號(hào)保留兩邊的引號(hào),避免json校驗(yàn)失敗
問(wèn)題描述
解析爬取的json數(shù)據(jù)時(shí),報(bào)如下錯(cuò)誤:
com.alibaba.fastjson.JSONException: syntax error, position at 4164, name mc at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:586) at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:1157) at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:476) at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1327) at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1293) at com.alibaba.fastjson.JSON.parse(JSON.java:137) at com.alibaba.fastjson.JSON.parse(JSON.java:128) at com.alibaba.fastjson.JSON.parseObject(JSON.java:201) at com.nawang.crawl.GuizhouEnterpriseListCrawlAll2.crawlList(GuizhouEnterpriseListCrawlAll2.java:210) at com.nawang.crawl.GuizhouEnterpriseListCrawlAll2.main(GuizhouEnterpriseListCrawlAll2.java:85)
問(wèn)題原因
獲取到”d”名稱對(duì)應(yīng)的所需結(jié)果
String allData = (String) JSONObject.parseObject(searchListStr).get('d');
調(diào)試時(shí)發(fā)現(xiàn)結(jié)果集 allData 字符串中間含有1個(gè)或多個(gè)雙引號(hào)(”)導(dǎo)致校驗(yàn)失敗
{'mc':'崔記'純凈水經(jīng)營(yíng)部'},
{'mc':'貳+壹'休閑吧'},
{'mc':'富貴鳥(niǎo)'皮鞋經(jīng)營(yíng)店'},
{'mc':'紅萍果'窗簾'}
用在線JSON校驗(yàn)格式化工具解析報(bào)錯(cuò):
第1行解析錯(cuò)誤:
{'mc':'崔記'純凈水經(jīng)營(yíng)部'},{'mc':'貳+壹
----------^
期望是 ’EOF’, ’}’, ’:’, ’,’, ’]’
將字符串中間的雙引號(hào)”去掉就符合JSON格式了,校驗(yàn)成功。
解決方法
當(dāng)然是想辦法如何去掉字符串中間的雙引號(hào)。
直接替換引號(hào)是不行的,名稱/值對(duì)全是雙引號(hào)括起來(lái)的,只是多了中間的雙引號(hào)。
最后想了個(gè)方法,利用名稱/值對(duì)的固定格式進(jìn)行雙引號(hào)單引號(hào)替換,其余的雙引號(hào)替換為空,然后單引號(hào)替換回雙引號(hào)。原字符串如 :
{“mc”:”崔記”純凈水經(jīng)營(yíng)部”},{“mc”:”貳+壹”休閑吧”},…
String s = allData.replaceAll('{'','{’') // {' --> {’ .replaceAll('':'', '’:’') // ':' --> ’:’ .replaceAll('','', '’,’') // ',' --> ’,’ .replaceAll('':', '’:') // ': --> ’: .replaceAll(','', ',’') // ,' --> ,’ .replaceAll(''}', '’}') // '} --> ’} .replaceAll(''', '') // ' --> 空,以去掉字符串中間的引號(hào) .replaceAll('’', ''') // ’ --> ',所有的單引號(hào)替換回雙引號(hào) .replaceAll('<br />', '') // 去掉字符串中的<br /> .replaceAll('', '?'); // 字符串中含也會(huì)導(dǎo)致解析失敗JSONObject jsonData = JSONObject.parseObject(s);
這樣處理后,JSON 解析成功。
以上這篇Java Json字符串的雙引號(hào)('')括號(hào)如何去掉就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Python結(jié)合百度語(yǔ)音識(shí)別實(shí)現(xiàn)實(shí)時(shí)翻譯軟件的實(shí)現(xiàn)2. 教你JS更簡(jiǎn)單的獲取表單中數(shù)據(jù)(formdata)3. 如何通過(guò)vscode運(yùn)行調(diào)試javascript代碼4. Python基于QQ郵箱實(shí)現(xiàn)SSL發(fā)送5. 測(cè)試模式 - XSL教程 - 56. 解決Java中的java.io.IOException: Broken pipe問(wèn)題7. JAVA抽象類及接口使用方法解析8. python如何寫(xiě)個(gè)俄羅斯方塊9. 《CSS3實(shí)戰(zhàn)》筆記--漸變?cè)O(shè)計(jì)(一)10. python b站視頻下載的五種版本
