使用gson在解析unicode时遇到的问题

之前在用gson解析的时候未记录下来,所以今天做一个小的总结,

比如遇到像这种"\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对象即可。

时间: 2024-10-31 11:30:11

使用gson在解析unicode时遇到的问题的相关文章

使用POI解析Excel时,出现org.xml.sax.SAXParseException: duplicate attribute 'o:relid'的解决办法

1.使用org.apache.poi解析excle,.xlsx类型文件InputStream is = new FileInputStream(strFileName);XSSFWorkbook wb = new XSSFWorkbook(is);出现异常如下: org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetExceptionat org.apache.poi.xssf.usermodel.XSSFFactor

Gson json 解析相关不稳定问题

Gson解析json 先定义好一个对象,对象的成员类型都已经确定,如果json数据里的类型不对,这样直接报错. 如果json数据放回 {“reslult”:["xxx","xxx"]} 对象定义是个数组即可解析出来,如果遇到“result” 为空?({“reslult”:null})怎么办? Gson解析就编译不过,必须返回结果 是{“reslult”:[]}这样 Gson才会认为它是数组,解析才能通过 Gson json 解析相关不稳定问题,布布扣,bubuko.

Jsoup解析html时对相对地址的处理

前一段时间运用htmlparser时,获取地址是时直接将html页面的相对地址转换成绝对地址,然而今天在运用jsoup,开始的时候发现只能得到相对地址,最后在网上寻找到了解决办法. htmlparser获得URLs: //参数说明:parser为模拟浏览器对URL地址操 dataPath:所解析的URL存放路径 dataName:存放URL的数据库名 public static void extractURL(final Parser parser, final String dataPath,

Gson全解析(上)-Gson基础

前言 最近在研究Retrofit中使用的Gson的时候,发现对Gson的一些深层次的概念和使用比较模糊,所以这里做一个知识点的归纳整理. Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象.而JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,广泛应用于各种数据的交互中,尤其是服务器与客户

Gson全解析(中)-TypeAdapter的使用

TypeAdapter介绍 前面的Gson全解析(上)中我们理解并分别运用了JsonSerializer和JsonDeserializer进行JSON和java实体类之间的相互转化.这里利用TypeAdapter来更加高效的完成这个需求. 之前在上一篇文中提到的JsonSerializer和JsonDeserializer解析的时候都利用到了一个中间件-JsonElement,比如下方的序列化过程.可以看到我们在把Java对象转化为JSON字符串的时候都会用到这个中间件JsonElement J

使用JsonKit解析中文时注意事项

使用JsonKit解析中文时如果返回值为空,可能使用因为计算长度时不准确造成的. 解决方法: NSString *pricePath = [[NSBundle mainBundle] pathForResource:@"CarSelectPrice" ofType:@"json"]; NSString *priceStr = [[NSString alloc] initWithContentsOfFile:pricePath encoding:NSUTF8Strin

android使用Gson来解析json

Gson是一种对象的解析json,非常好用,介绍一个站点http://json.parser.online.fr/能够帮我们看一个字符串是不是Json 对于Json文件 { "id" : "3232", "data" : { "data1" : { "name" : "xiaoming", "age" : "12" } } } 假设用Gson来解析

dom4j解析xml时取消DTD验证

解决方式整合一下,就分两种: 1.用setFeature() SAXReader reader = new SAXReader();reader.setValidation(false); reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);... 2.用setEntityResolver() SAXReader reader = new SAXReader

关于Gson解析json时timestamp转化bean中date类型问题

GsonBuilder builder = new GsonBuilder(); builder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() { public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws   JsonParseException { return new Date