반응형
Json과 Map은 개발 시 정말 많이 사용하게 됩니다.
비슷하지만 다르기 때문에 동시에 사용하다 보면 서로 변환해줘야 하는 일이 생기게 되는데, 이를 편리하게 사용하기 위해 서로 변환하는 함수를 만들어 유용하게 사용할 수 있습니다,
Json과 Map을 서로 형변환하는 방법에 대해 알아보도록 하겠습니다.
우선 생김새부터 보도록 하겠습니다.
Map 예시
{size=100, color=red}
Json 예시
{"size":100,"color":"red"}
비슷한 형태이지만 확실히 다른 게 보입니다.
Json을 Map으로, Map을 Json으로 변환하는 예제와 테스트 결과를 확인해보도록 하겠습니다.
먼저 pom.xml에 dependency를 추가합니다.
pom.xml 추가
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
그 후 아래 항목을 import 합니다.
Java import
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
반응형
1. Json To Map
String 형태의 Json을 보내고 Map 형태로 return 해줍니다.
1
2
3
4
5
6
7
|
public Map<String, Object> jsonToMap(String json) throws Exception
{
ObjectMapper objectMapper = new ObjectMapper();
TypeReference<Map<String, Object>> typeReference = new TypeReference<Map<String,Object>>() {};
return objectMapper.readValue(json, typeReference);
}
|
cs |
2. Map To Json
1
2
3
4
5
6
|
public String mapToJson(Map<String, Object> map) throws Exception
{
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(map);
}
|
cs |
두 가지 함수를 테스트해보도록 하겠습니다.
테스트를 하기 위한 전체 코드 예제입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;
public class TestClass {
public Map<String, Object> jsonToMap(String json) throws Exception
{
ObjectMapper objectMapper = new ObjectMapper();
TypeReference<Map<String, Object>> typeReference = new TypeReference<Map<String,Object>>() {};
return objectMapper.readValue(json, typeReference);
}
public String mapToJson(Map<String, Object> map) throws Exception
{
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(map);
}
public static void main(String[] args)
{
Map<String, Object> testMap = new HashMap<String, Object>();
testMap.put("size", 100);
testMap.put("color", "red");
System.out.println("임시로 생성한 Map : " + testMap);
try
{
String convertJson = "";
convertJson = mapToJson(testMap);
System.out.println("Map -> Json : " + convertJson);
Map<String, Object> convertMap = new HashMap<String, Object>();
convertMap = jsonToMap(convertJson);
System.out.println("Json -> Map : " + convertMap);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
|
cs |
결과
임시로 생성한 Map : {size=100, color=red}
Map -> Json : {"size":100,"color":"red"}
Json -> Map : {size=100, color=red}
결과를 보면 처음 임시로 생성한 Map을 Json으로 변환되는 것과 변환한 Json이 다시 Map으로 변환되는 것을 확인할 수 있습니다.
각자 필요한 상황에 맞게 사용하시기 바랍니다.
728x90
반응형
'IT, 개발 > JAVA' 카테고리의 다른 글
AMQP RabbitMQ Topic Exchange 통신 예제 (JAVA 예제) (0) | 2022.08.30 |
---|---|
AMQP RabbitMQ Direct Exchange 통신 예제 (JAVA 예제) (0) | 2022.08.29 |
JAVA - while / do-while 사용법, 차이점 (0) | 2022.08.17 |
log4jdbc 로그 출력하기 (MySQL, Spring Framework, log4j) (0) | 2022.08.02 |
Spring / MySQL 연동 에러 (Could not get JDBC Connection) (1) | 2022.08.01 |