Gson 序列化器的使用
2018-11-26 07:55:59来源:博客园 阅读 ()
业务场景:最近在做一个文件路径的加密,很多类设计到文件的路径,由于我们项目的使用的框架比较奇葩,然而很多类继承了一个处理返回参数的父类,我就在这个父类里面开始动刀了:
序列化这边的工具用到的是GSON属于谷歌:
1 import com.alibaba.fastjson.JSONObject; 2 import com.fasterxml.jackson.databind.ObjectMapper; 3 import com.google.gson.*; 4 import com.sxx.inpa.CommonEnctyptUtil; 5 6 import java.io.IOException; 7 import java.lang.reflect.Type; 8 import java.util.*; 9 10 public class GosnDemo { 11 12 public static void main(String[] args) throws IOException { 13 // GsonBuilder用来生成Gson对象. 规定Gson的序列化和返序列化时的格式等内容. 14 GsonBuilder gsonBuilder = new GsonBuilder(); 15 // 这里定义匿名内部类的序列化器,指定只针对String类型的value进行序列化这里在序列化过程中可以对其进行你想要的业务操作 16 // 当然这里我的业务是进行AES加密 17 JsonSerializer<String> serializer = 18 new JsonSerializer<String>() { 19 @Override 20 public JsonElement serialize(String src, Type typeOfSrc, JsonSerializationContext context) { 21 String substring = ""; 22 // if (src.contains("/nfsc/") || src.contains("nfsc/")) { 23 String[] split = src.split("\\|"); 24 List<String> strings = Arrays.asList(split); 25 StringBuffer stringBuffer = new StringBuffer(); 26 strings.forEach(a -> { 27 // CommonEnctyptUtils是我的加密工具类 28 String aesResult = CommonEnctyptUtil.getAESResult(a, 3); 29 stringBuffer.append(aesResult).append("|"); 30 }); 31 String aesString = stringBuffer.toString(); 32 substring = aesString.substring(0, aesString.length() - 1); 33 // } 34 // 这里返回值是JsonElement 可以创建一个JsonPrimitive类(json的元数据) 35 // 这里 src String 类型的是json的元数据 当然JsonObject 也是属于 json的元数据 36 // 因此可以返回 jsonObject 37 JsonPrimitive jsonPrimitive = new JsonPrimitive(substring); 38 return jsonPrimitive; 39 } 40 }; 41 // 把自定义的序列化器注册到GsonBuilder的Gson构建类上去 42 gsonBuilder.registerTypeAdapter(String.class, serializer); 43 // 此时创建 Gson 44 Gson customGson = gsonBuilder.create(); 45 Object exResponse = ""; 46 List<Map<String, Object>> list = new ArrayList<>(); 47 Map<String, Object> map = new HashMap<>(); 48 // map.put("test", "/nfsc/|/nfsc/|/nfsc/"); 49 map.put("test", "/nfsc/"); 50 map.put("number", 1); 51 list.add(map); 52 System.out.println(list); 53 Object o = JSONObject.toJSON(list); 54 String s = o.toString(); 55 if (s.contains("/nfsc/") || s.contains("nfsc/")) { 56 // 转换成json字符串进行操作 57 String customJSON = customGson.toJson(list); 58 ObjectMapper objectMapper = new ObjectMapper(); 59 // 反序列化成对象 60 exResponse = objectMapper.readValue(customJSON, Object.class); 61 } 62 System.out.println(exResponse); 63 } 64 65 66 }
第一篇文章比较简陋,注释还行,我目标是做一个严谨的男人,有什么好的建议,大家可以建议给我,互相交流学习,谢谢!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:java map集合 --遍历
下一篇:MyBatis中避免注入攻击
- 聊聊 OAuth 2.0 的 token expire_in 使用 2020-06-08
- 为什么阿里巴巴Java开发手册中强制要求接口返回值不允许使用 2020-06-06
- 学习笔记之方法引用 2020-06-06
- idea使用小技巧(一) 2020-06-05
- 用斗地主的实例学会使用java Collections工具类 2020-06-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash