业务场景:最近在做一个文件路径的加密,很多类设计到文件的路径,由于我们项目的使用的框架比较奇葩,然而很多类继承了一个处理返回参数的父类,我就在这个父类里面开始动刀了:
序列化这边的工具用到的是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 }
第一篇文章比较简陋,注释还行,我目标是做一个严谨的男人,有什么好的建议,大家可以建议给我,互相交流学习,谢谢!
来源:https://www.cnblogs.com/shixiaoxin-fighting/p/10007139.html