반응형
네이버 로그인 같은 api 형태를 사용할 때 반환되는 값은 Json String 형식이다.
RestTemplate를 사용하면 만사 OK라서 해당 내용은 필요가 없다.
특정 환경상 RestTemplate가 힘든 경우 ..
1. Gson 활용 (재귀 필요없음)
import com.google.gson.*;
import java.util.Map;
public class MainClass {
/**
* Json 형태의 String 값을 Map으로 변환하는 함수 : Gson은 Long이 아니라 double로 변경해서 문제가 생긴다.
* */
private Map<String, Object> jsonStringToMap(String jsonString){
Gson gson = new GsonBuilder()
.setLongSerializationPolicy(LongSerializationPolicy.STRING)
.create();
Map map = gson.fromJson(jsonString, Map.class);
//System.err.println(map);
return map;
}
}
2. json simple 활용 (필요 시 재귀 필요함)
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.util.HashMap;
import java.util.Map;
public class MainClass {
/**
* Json 형태의 String 값을 Map으로 변환하는 함수
*/
private Map<String, Object> jsonStringToMap(String jsonString) throws Exception {
Map<String, Object> map = new HashMap<>();
try {
JSONParser parser = new JSONParser();
JSONObject jsonObject = (JSONObject) parser.parse(jsonString);
for (Object key : jsonObject.keySet()) {
String keyStr = (String) key;
Object value = jsonObject.get(keyStr);
map.put(keyStr, value);
}
} catch (Exception e) {
System.err.println(e);
}
//System.err.println(map);
return map;
}
}
위 함수를 활용하면 간편하게 문자열 형태의 json 값을 Map으로 반환할 수 있다.
'Java & Spring' 카테고리의 다른 글
Java HttpServletRequest 클라이언트 IP 가져오기 (Client IP, 접속자 IP) (0) | 2023.09.15 |
---|---|
Spring에서 서버 상태를 체크하는 Interceptor !! (0) | 2023.09.14 |
List의 값을 가져와서 다른 List에 담을 때, for-loop, iterator, Stream foreach, ParallelStream에 대하여.. (0) | 2022.01.13 |
log4j 취약점 조치 (CVE-2021-44228) (CVE-2021-4504) (0) | 2021.12.30 |
기본자료형과 객체자료형 차이점 (0) | 2021.12.30 |
댓글