json 特殊字符处理问题
程序员文章站
2022-12-20 20:39:29
特殊字符处理问题在从第三方接过来的数据中总会有一些奇奇怪怪的字符,而现在数据的传输很多都采用的json格式,对特殊字符的处理,还有生僻字的处理是我们在处理报文中必须要面对的问题,选择一个好的处理库可以减少很多麻烦事。JSON串和Object常见转换方式五种常见的处理方式。Json-Lib
特殊字符处理问题
在从第三方接过来的数据中总会有一些奇奇怪怪的字符,而现在数据的传输很多都采用的json格式,对特殊字符的处理,还有生僻字的处理是我们在处理报文中必须要面对的问题,选择一个好的处理库可以减少很多麻烦事。
JSON串和Object常见转换方式
五种常见的处理方式。
<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20200518</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.12.0-rc1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
fastjson不支持unicode
在系统间通讯传输的时候现在普遍是json的格式,阿里的fastjson应该是用的比较多的,这回是碰上了unicode的特殊字符。fastjson的处理是将其转义,成为 \u…
这样在传输到其他系统的时候就转义不回来了,串里判断不出来对应的转义字符。但是直接给过滤也不行啊,unicode那么多,不能都把特殊字符给过滤一遍吧
fastjson给转义后的字符串:
unicode 字符集查看
https://www.qqxiuzi.cn/zh/unicode-zifu.php
最终处理
换成Gson了
Gson gson = new Gson();
System.out.println(gson.toJson(map));
原样传送,不带更改
序列化null值问题
json转换方式中默认都不会对null值进行处理,即为null的对象序列化一下就没有对应的key了。
fastjson
JSON.toJSONString(Object object, SerializerFeature.WriteMapNullValue)
其他null值的参数
QuoteFieldNames———-输出key时是否使用双引号,默认为true
WriteMapNullValue——–是否输出值为null的字段,默认为false
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null
WriteNullStringAsEmpty—字符类型字段如果为null,输出为"",而非null
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null
Gson
Gson gson = new GsonBuilder()
.serializeNulls()
.create();
本文地址:https://blog.csdn.net/qq_21271511/article/details/109642865