使用gson在解析unicode时遇到的问题
2016-01-07 15:46
489 查看
之前在用gson解析的时候未记录下来,所以今天做一个小的总结,
比如遇到像这种"\u003d"的unicode的字符,我们想解码这个字符,用gson可以这样表达
上面的输出结果为
s2:"{\"hi\":\"\u003d\"}"
{"hi":"="}
可见传入到json中的字符串必须是带转义字符的,且格式必须是正确的,否则会出错,
同样的,解码一个unicode字符也可以使用URLDecoder,这个对unicode的直接解析比较方便。
代码如下:
上面的代码输出如下:
=
该方法较上一种方便很多。
另外利用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 他好像也是转的,,,所以就找不到原作者了,,,,
比如遇到像这种"\u003d"的unicode的字符,我们想解码这个字符,用gson可以这样表达
Gson gson=new Gson(); String s2 = "\"{\\\"hi\\\":\\\"\\u003d\\\"}\""; System.out.println("s2:"+s2); String s = gson.fromJson(s2, String.class); System.out.println(s);
上面的输出结果为
s2:"{\"hi\":\"\u003d\"}"
{"hi":"="}
可见传入到json中的字符串必须是带转义字符的,且格式必须是正确的,否则会出错,
同样的,解码一个unicode字符也可以使用URLDecoder,这个对unicode的直接解析比较方便。
代码如下:
String ss = URLDecoder.decode("\u003d","utf-8"); System.out.println(ss);
上面的代码输出如下:
=
该方法较上一种方便很多。
另外利用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 他好像也是转的,,,所以就找不到原作者了,,,,
相关文章推荐
- WebView加载网页完成后跳转到about:blank
- 换成atomikos后报java.lang.AbstractMethodError: oracle.jdbc.driver.LogicalConnection.createClob()Ljava/sq
- 在Oracle中查看表空间的使用情况
- 2016/1/7文件上传下载代码
- C# 两个独立exe程序直接通信
- Bugfree安装步骤[转载]
- html5 iphone 特殊meta属性学习
- Javascript模块化编程(二):AMD规范
- Java基础之基本类型转换知识点详解
- nagios插件ndoutile
- Apache Thrift之java入门例子
- FTL中常用说明
- noetpad++ 使用svn
- JavaScript基本概念(四)---操作符
- C#Question:“XXX”的重载均与“System.Threading.WaitCallback”不匹配。
- haproxy学习笔记之配置文件参数详解
- haproxy学习笔记之配置文件参数详解
- 判断字符串是否为空格
- 微机接口课设——设计一个模拟汽车控制系统
- 面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,原新数组以4行4列的方式输出