1. 程式人生 > 程式設計 >Java Json字串的雙引號("")括號如何去掉

Java Json字串的雙引號("")括號如何去掉

我就廢話不多說了,大家還是直接看程式碼吧~

//自己copy試一下比什麼都好
public static void main(String[] args) {
		String json = "[\"name\":\"value\",\"value1\"]"; 
		String t = json.replaceAll("\\\"","");
		System.out.println("去除雙引號和斜槓後:"+t);
		String replaceAll = t.replace("[","").replace("]","");
		System.out.println("去除左右中括號後:"+replaceAll);
	}

補充知識:java 替換json字串中間的引號保留兩邊的引號,避免json校驗失敗

問題描述

解析爬取的json資料時,報如下錯誤:

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)

問題原因

獲取到”d”名稱對應的所需結果

String allData = (String) JSONObject.parseObject(searchListStr).get("d");

除錯時發現結果集 allData 字串中間含有1個或多個雙引號(”)導致校驗失敗

{"mc":"崔記"純淨水經營部"},

{"mc":"貳+壹"休閒吧"},

{"mc":"富貴鳥"皮鞋經營店"},

{"mc":"紅萍果"窗簾"}

用線上JSON校驗格式化工具解析報錯:

第1行解析錯誤:

{"mc":"崔記"純淨水經營部"},{"mc":"貳+壹

----------^

期望是 'EOF','}',':',',']'

將字串中間的雙引號”去掉就符合JSON格式了,校驗成功。

解決方法

當然是想辦法如何去掉字串中間的雙引號。

直接替換引號是不行的,名稱/值對全是雙引號括起來的,只是多了中間的雙引號。

最後想了個方法,利用名稱/值對的固定格式進行雙引號單引號替換,其餘的雙引號替換為空,然後單引號替換回雙引號。原字串如 :

{“mc”:”崔記”純淨水經營部”},{“mc”:”貳+壹”休閒吧”},…

String s = allData.replaceAll("\\{\"","{'") // {" --> {'
  .replaceAll("\":\"","':'") // ":" --> ':'
  .replaceAll("\",\"","','") // "," --> ','
  .replaceAll("\":","':") // ": --> ':
  .replaceAll(",",'") //," -->,'
  .replaceAll("\"\\}","'}") // "} --> '}
  .replaceAll("\"","")  // " --> 空,以去掉字串中間的引號
  .replaceAll("'","\"")  // ' --> ",所有的單引號替換回雙引號
  .replaceAll("<br />","") // 去掉字串中的<br />
  .replaceAll("\\\\","?"); // 字串中含\也會導致解析失敗
JSONObject jsonData = JSONObject.parseObject(s);

這樣處理後,JSON 解析成功。

以上這篇Java Json字串的雙引號("")括號如何去掉就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。