公司的項(xiàng)目,通過json傳回來的是這么個(gè)東西:
NewsId":"94f52614-8764-46d7-a5fe-d0da1fe878ed","NewsTitle":"大型公選課《可持續(xù)發(fā)展與未來》系列二之現(xiàn)代經(jīng)濟(jì)(綠色經(jīng)濟(jì))開始網(wǎng)上選課報(bào)名","NewsContent":"<span style="font-size:12pt;font-family:宋體;color:black;line-height:150%;"><span>近日,伴隨著我校鄭時(shí)齡院士、童小華教授分別在四平、嘉定舉行的精彩演講,本學(xué)期我校著力打造的大型公共選修課程《可持續(xù)發(fā)展與未來》之系列一已經(jīng)圓滿結(jié)束。該課程也是我校</span>“<span>可持續(xù)發(fā)展輔修專業(yè)</span>”<span>的核心必修課程之一。</span></span> <p style="text-indent:21pt;"></p>.........</span>
各種查詢之后發(fā)現(xiàn)無法解析的根本原因就是里面有雙引號" " "和反斜杠" / ".
還不能直接對json進(jìn)行轉(zhuǎn)義,否則會將json本身自帶的雙引號都給轉(zhuǎn)義了,所以不能暴力轉(zhuǎn)義
上網(wǎng)找的方法:
//將壞的json數(shù)據(jù)里面的雙引號,改為中文的雙引號(啥都行,只要不是雙引號就行)	public String jsonStringConvert(String s){    		char[] temp = s.toCharArray();        		int n = temp.length;    		for(int i =0;i<n;i++){      	if(temp[i]==':'&&temp[i+1]=='"'){          for(int j =i+2;j<n;j++){            if(temp[j]=='"'){              if(temp[j+1]!=',' && temp[j+1]!='}'){                temp[j]='”';              }else if(temp[j+1]==',' || temp[j+1]=='}'){                break ;              }            }          }        	}    }        return new String(temp);  }</span>此方法能將json本身的雙引號以外的雙引號轉(zhuǎn)義為中文的雙引號(其他什么都行)。這樣就能夠轉(zhuǎn)義為正確的json字符串。
備忘:
在此方法之前,還要將html代碼去空格,否則json也不能夠解析,去空格方法:
public String replaceBlank(String str) {		String dest = "";	if (str != null) {			Pattern p = Pattern.compile("//s*|/t|/r|/n");		Matcher m = p.matcher(str);			dest = m.replaceAll("");			// Pattern p2 = Pattern.compile("//s*/"");			// Matcher m2 = p2.matcher(dest);			// dest = m2.replaceAll("/'");			dest = dest.replace("=/"", "='");			p = Pattern.compile("/"/0*>");			m = p.matcher(dest);			dest = m.replaceAll(">'");		}		return dest;}</span>以上這篇解析錯(cuò)誤富文本json字符串(帶雙引號)的快速解決方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選