修改JSONObject源码使JSON官方的java扩展支持对汉字进行ascii转义
来源:互联网 发布:云电视直播软件下载 编辑:程序博客网 时间:2024/05/02 00:28
本文转自:http://eit.name/blog/read.php?462
近日某同事在用java发布一个API时,使用Json进行数据编码,发现JSON官方的java扩展在处理汉字时未进行ascii转义,如下所示:
Java源码:
AppObject ao=new AppObject(20,"鱼漂");
try {
JSONObject jo=new JSONObject(ao);
System.out.println(jo.toString());
} catch (Exception e) {
System.out.println("json encode error.");
}
输出为:
{"name":"鱼漂","age":10}
其中的name仍然显示中文,未进行ascii转义,通常情况下是可以正常使用的,但在不同的系统互相调用时,可能需要编码转换,比如从GBK转到UTF8。
通过查看源代码发现,在JSONObject.java的1138-1139行,只将/u0080-/u00a0, /u2000-/u2100的字符转成/u的格式。汉字的unicode编码不在这两个范围之内,所以不会转换。
找到原因后,修改就比较简单,我们只需简单的将/u0080以上的所有字符,转成/u格式即可,将1138-1139行改为:
if (c < ' ' || c >= '/u0080') {
再次测试,输出结果为:
{"name":"/u9c7c/u6f02","age":10}
- 修改JSONObject源码使JSON官方的java扩展支持对汉字进行ascii转义
- 对Java的URL类支持的协议进行扩展的方法
- JSONObject 进行json数据的转化
- JSONObject(org.json)的一点修改
- Android-JSONObject对JSON数据进行创建和读取的操作-Oak先生
- java后台对前端输入的特殊字符进行转义
- java后台对前端输入的特殊字符进行转义
- jackson JSON 支持转义
- ffmpeg修改源码添加flv对pcm的打包支持
- opencv源码修改与使用:fastNlMeansDenoisingMulti()对CV_16U的支持
- Java对【JSON数据的解析】--官方解析法
- Java读取json文件并对json数据进行读取、添加、删除与修改操作
- fastreport中的对汉字的支持
- 改进Source Insight对汉字的支持
- 修改ajaxfileupload.js 源码 对ie9支持
- java中对父类的属性进行扩展
- Jersey对JSON的支持
- Java和JavaScript对XML与JSON的支持
- java获取域账号下的用户完整版
- 快速删除某个用户下的所有表数据
- 在WebService中使用具有只读属性的类实例
- 关于Unix哲学
- Grails Goodness: Type Conversion on Parameters
- 修改JSONObject源码使JSON官方的java扩展支持对汉字进行ascii转义
- Android如何生成设备节点
- 正则理解
- 开机广播问题
- Adapter(适配器)模式
- (转载)fopen /open,read/write和fread/fwrite区别
- Struts1和Struts2的区别
- 使用邮件到达短信通知
- 深入理解Objective-c中@class的含义