以前在用gson解析的時候未記錄下來,因此今天作一個小的總結,java
好比遇到像這種"\u003d"的unicode的字符,咱們想解碼這個字符,用gson能夠這樣表達apache
Gson gson=new Gson(); String s2 = "\"{\\\"hi\\\":\\\"\\u003d\\\"}\""; System.out.println("s2:"+s2); String s = gson.fromJson(s2, String.class); System.out.println(s);
上面的輸出結果爲json
s2:"{\"hi\":\"\u003d\"}"api
{"hi":"="}工具
可見傳入到json中的字符串必須是帶轉義字符的,且格式必須是正確的,不然會出錯,ui
一樣的,解碼一個unicode字符也可使用URLDecoder,這個對unicode的直接解析比較方便。編碼
代碼以下:spa
String ss = URLDecoder.decode("\u003d","utf-8"); System.out.println(ss);
上面的代碼輸出以下:.net
=3d
該方法較上一種方便不少。
另外利用gson轉換成json字符串的時候會自動編碼特殊字符,若是要忽略此功能,則使用
new GsonBuilder().disableHtmlEscaping().create()
建立gson對象便可。
------------------------------------------------------------------------------------------------------
此處分割線,樓主最近又發現一個奇怪的問題,上面的URLDecoder中傳入的若是是這種字面量,他是能夠解析的,其實直接用java的println打出來也是中文,可是若是不是這種字面量,那問題就比較麻煩了,由於即便是同樣的字符串,他也是不能解碼的,,後來樓主在網上的一片博客中找到了另外一種方法,即便用org.apache.commons.lang.StringEscapeUtils#unescapeJava(String) 這是使用apache提供的包裏的工具,若是你的工程裏沒有引用這個,也不用擔憂,原博客提供了另一種方法,此處貼上博客地址,http://blog.csdn.net/djun100/article/details/12128057 他好像也是轉的,,,因此就找不到原做者了,,,,