//build.gradle
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
public static Object toStr(Map<String, Object> map) {
try {
// jackson.databind.ObjectMapper 이용하여 String으로 Serialization
return getObjectMapper().writeValueAsString(map);
} catch (JsonProcessingException e) {
return null;
}
}
{"name":"mkyong","age":"37"}
포맷으로 변환
public static Map<String, Object> toMap(String jsonStr) {
try {
return getObjectMapper().readValue(jsonStr, LinkedHashMap.class);
} catch (JsonProcessingException e) {
return null;
}
}
{name=mkyong, age=37}
포맷으로 변환
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ll.exam.sb_jwt_exam.app.jwt.AppConfig;
import lombok.RequiredArgsConstructor;
import java.util.LinkedHashMap;
import java.util.Map;
@RequiredArgsConstructor
public class Utility {
private static ObjectMapper getObjectMapper() {
// AppConfig의 context 변수를 static으로 선언해놨기 때문에 @Autowired 어노테이션 사용불가
// 대신 @Autowired 기능 직접 구현 -> .getBean("objectMapper")
// 이 외의 방법) new ObjectMapper로 새로 객체 생성할 수도 있지만 싱글톤 객체로 유지하기 위해 이런 방법으로 구현
// private final ObjectMapper objectMapper로 생성자주입하지 않는 이유? json 클래스는 static이므로 static 변수 필요
return (ObjectMapper) AppConfig.getContext().getBean("objectMapper");
}
public static class json {
public static Object toStr(Map<String, Object> map) {
try {
// jackson.databind.ObjectMapper 이용하여 String으로 Serialization
return getObjectMapper().writeValueAsString(map);
} catch (JsonProcessingException e) {
return null;
}
}
public static Map<String, Object> toMap(String jsonStr) {
try {
return getObjectMapper().readValue(jsonStr, LinkedHashMap.class);
} catch (JsonProcessingException e) {
return null;
}
}
}
}
import lombok.Getter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Getter
private static ApplicationContext context;
@Autowired
public void setContext(ApplicationContext context) {
AppConfig.context = context;
}
}
Utility.json.toStr(claims);
Utility.json.toMap(body);