前言
首先讲一下我碰到这个问题的情况,在我把一个java对象转成json字符串后放在请求头中准备调用另一个服务的接口,这时候我的程序发生了一个非常奇怪的问题,在我对象转成json字符串是没有问题的,但是到了另一个接口后这个json字符串发生了内容缺失,这种情况其实是json字符串编码的问题。
一、json出现的问题
存header
User user = UserInfoContext.getUser();
requestTemplate.header("USER_INFO", JSON.toJSONString(user));
取header
String user = request.getHeader("USER_INFO");
User user1 = JSON.parseObject(userJson, User.class);
咋一看这段代码是没有问题的,但是我在取header时它的内容就发生了缺失
这是原来的json字符串{id:"16", "image":null, "name":"fj"}
变成了{id:"16", "image"
二、解决方法
存header时
String json = JSON.toJSONString(user);
byte[] jsonBytes = json.getBytes(StandardCharsets.UTF_8);
String jsonBase64 = Base64.getEncoder().encodeToString(jsonBytes);
requestTemplate.header("USER_INFO", jsonBase64);
取header时
String user = request.getHeader("USER_INFO");
byte[] userBytes = Base64.getDecoder().decode(user);
String userJson = new String(userBytes, StandardCharsets.UTF_8);
User user1 = JSON.parseObject(userJson, UserInfo.class);