以前在用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 他好像也是转的,,,因此就找不到原做者了,,,,