本文转自: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 jsonObject 源码 json jsonObject 源码 json jsonObject 源码 json jsonObject 源码 json
最近在研究Webservice的时候遇到一个问题,把java对象转化问json后传过去,接受的是String类型,怎么恢复到原来的java对象呢,后来再一个项目中看到了转换方法,转换顺序为javaBean--jsonObject--jsonString,还原...
java 解析 json文件java 解析 json文件java 解析 json文件java 解析 json文件java 解析 json文件
1.解析json字符串 2.将json字符串转换为java对象 3.将java对象转换为json字符串
java及j2ee开发中常需要将对象转成json字符串进行数据传输,该包提供了JAVA对象和json字符串之间的转换方法。常见的类有JSONObject等
JsonObject 与 Newtonsoft.Json.Net20 两个dll,JsonObject 与 Newtonsoft.Json.Net20 两个dll,
org.json.JSONObject引用依赖包
org.json.JSONObect的一个jar包org.json.JSONObect的一个jar包
生成json格式和解析json格式的六大架包,建议初学者看看
C#的一个解析JSON的工具类,像java一样优雅的解析JSON数据,包含有JSONObject和JSONArray对象。 JSONObject json = new JSONObject(); json.Put("sex", "男"); json.Put("age", 123); json.Put("name", "张三"); ...
java把string转换为json,之后解析需要用到的jar包和依赖包。
org.json.JSONObject的6个jar包 commons-beanutils;commons-collections;commons-lang;commons-logging;ezmorph;json-lib
net.sf.json.JSONObject ==> Java对象
此资源包含服务端使用的JSONObject的jar包以及服务端和客户端的代码
此资源包包含了《Java的JSON解析》的源代码,包括四个类: 1、JSON #解析json字符串,并生成JSONObject 2、JSONObject #json对象 3、JSONArray #json数组对象 4、JSONException #JSON解析过程中抛出的异常
下面小编就为大家分享一篇java的JsonObject对象提取值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
NULL 博文链接:https://bijian1013.iteye.com/blog/2310861
方便好用的json解析库,每个json元素都是一个JsonElement对象,通过这个对象,你可以很方便的从Json子类对象中得到你想要的值,不需要你进一步转换,用法如: JsonObject jsonObject = new JsonObject (...); 在...