본문 바로가기
IT, 개발/JAVA

JAVA - Json을 Map으로 / Map을 Json으로 형변환(Json to Map, Map to Json)

by 개발자스터디 2022. 8. 19.
반응형

 

 

 

 

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
반응형