这是一种非包导入方式:
java.util.Base64.Decoder decoder = java.util.Base64.getUrlDecoder();
String[] parts = jwtToken.split("\\."); // split out the "parts" (header, payload and signature)
String headerJson = new String(decoder.decode(parts[0]));
String payloadJson = new String(decoder.decode(parts[1]));
//String signatureJson = new String(decoder.decode(parts[2]));
不管(这个替代 org.apache.commons.codec.binary.Base64 SiKing'sanswer )......您可能还想将这些 json 片段推送到 pojo 的。
然后,您可以将这些 json 片段转换为 pojo。
标头是“动态的”(例如,您事先并不知道所有标头名称),因此您可能希望转换为键值对(在 java 中也称为“映射”)
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;
public class JwtTokenHeaders {
private final Map<String, Object> jsonMap; // = new HashMap<String, Object>();
public JwtTokenHeaders(String jsonString) {
ObjectMapper mapper = new ObjectMapper();
//String jsonString = "{\"name\":\"JavaInterviewPoint\", \"department\":\"blogging\"}";
//Map<String, Object> jsonMap = new HashMap<String, Object>();
try {
// convert JSON string to Map
this.jsonMap = mapper.readValue(jsonString,
new TypeReference<Map<String, String>>() {
});
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
@Override
public String toString() {
return org.apache.commons.lang3.builder.ToStringBuilder.reflectionToString(this);
}
}
有效负载(又名正文)定义更明确,因此您可以映射到 pojo .....您可以获取 json 并在此处创建匹配的 pojo:
http://pojo.sodhanalibrary.com/
在您使用在线工具(或自己手工制作pojo)之后......创建类似“MyPojo(.java)”的东西......
你最终会得到这样的东西:
//import com.fasterxml.jackson.databind.DeserializationFeature;
//import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
MyPojo tp = mapper.readValue(payloadJson, MyPojo.class);
如果http://pojo.sodhanalibrary.com/将来不再存在,只需在互联网上搜索“online json to pojo”,您可能会找到一些东西。