본문 바로가기
개발언어/JAVA

ObjectMapper

by devebucks 2020. 8. 8.
728x90

objectMapper

  • 스프링에 빈으로 등록이 되어있다.

 

참고 문서

 

How to convert Java object to / from JSON (Jackson) - Mkyong.com

- How to convert Java object to / from JSON (Jackson)

mkyong.com

 

1. 빠른 참조

1.1 JAVA 객체를 JSON으로 변환하기, writeValue(..)

ObjectMapper의 JAVA객체를 JSON으로 변경해주는 주요 메서드

  • objectMapper.writeValueAsString(객체);
  • objectMapper.writeValue(파일, 객체);
ObjectMapper mapper = new ObjectMapper();
User user = new User();

//Object to JSON in file(객체 -> 파일 JSON)
mapper.writerValue(new File("경로"), user);

//Object to JSON in String(객체 -> 문자열 JSON)
String jsonInString = mapper.writeValueAsString(user);

1.2 JSON을 JAVA객체로 변환하기, readValue(...)

ObjectMapper의 JSON을 JAVA객체로 변경해주는 주요 메서드

  • objectMapper.readValue(파일, 객체);
  • objectMapper.readValue(문자열, 객체);
ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{'name' : 'kis'}";

//JSON from file to Object(파일인 JSON -> 객체)
User user = mapper.readValue(new File("경로"), User.class);

//JSON from String to Object(문자열 JSON -> 객체)
User user = mapper.readValue(jsonInString, User.class);

2. Jackson 의존성

pom.xml 에 의존성 추가.

스프링에서는 이미 빈으로 등록이 되어 있기 때문에 pom.xml에 추가해 주지 않아도 됩니다.

<dependency>
	<groupId>org.codehaus.jackson</groupId>
	<artifactId>jackson-mapper-asl</artifactId>
	<version>1.9.13</version>
</dependency>

3. POJO(Plain Old Java Object)

POJO는 스프링에서도 자바 코드를 그대로 사용해서 객체를 구현할 수 있다는  Spring Framework의 특징을 말합니다.

Account.java

package com.devkis.json;
import java.util.List;

public class Account{
	private Long id;
    private String nickname;
    private String Set<String> tag;
}

4. 자바 객체를 JSON으로 변환

JacksonExsample.java

package com.devkis.json;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

public class JacksonExample{
	pulic static void main(String[] args){
		ObjectMapper mapper = new ObjectMapper();
        //For testing
        Account account = createDummyAccount();
    	
        try{
        	//객체 -> String의 JSON으로 변경하고 파일에 저장
            mapper.writeValue(new File("경로"), account);
            
            //객체 -> Sring의 JSON으로 변경
            String jsonInString = mapper.writeValueAsString(account);
        	System.out.println(jsonInString);
            
            //객체 -> String의 JSON으로 변경하고 이쁘게 출력
            jsonInString = mapper.writerWithDefaultPrettyPringter().writeValueAsString(account);
        	System.out.println(jsonInString);
        }catch(JsonGenerationException e){
        	e.printStackTrace();
        }catch(JsonMappingException e){
        	e.printStackTrace();
        }catch(IOException e){
        	e.printStackTrace();
        }
    
    }
    
    
    private static Account createDummyAccount(){
    	Account account = new Account();
        account.setId(1);
        account.setNickname("kis");
        Set<String> tags = new Set<>();
        tags.add("Spring");
        tags.add("JPA");
        tags.add("Springboot");
        
        account.setTags(tags);
        return account;
    }
}
//new json file is created in D:\\user.json"

{"id":1,"nickname":"devkis","messages":["Spring","JPA","Springboot"]}

{
  "id" : 1,
  "nickname" : "devkis",
  "tags" : [ "Spring", "JPA", "Springboot" ]
}

 

 

5. JSON을 자바 객체로 변경

package com.devkis.json;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

public class JacksonExample {
	public static void main(String[] args) {
    	ObjectMapper mapper = new ObjectMapper();
        try {
        	//JSON String을 객체로 변환하고 파일로 저장
            Account account = mapper.readValue(new File("경로"), Account.class);
           
            //JSON String을 객체로만 변환
            String jsonInString = {"\id"\:1,"\nickname"\:"devkis","\tags"\:["Spring", "JPA", "Springboot"]};
            Account account1 = mapper.readValue(jsonInString, Account.class);
            System.out.println(account1);     
        } catch(JsonGenerationException e){
        	e.pringStackTrace();
        } catch(JsonMappingException e){
        	e.printStackTrace();
        } catch (IOException e) {
        	e.printStackTrace();
        }
    
    }
}

 

결과

User [id=1, nickname=devkis, tags=[Spring, JPA, Springboot]]

User [id=1, nickname=devkis, tags=[Spring, JPA, Springboot]]
728x90

'개발언어 > JAVA' 카테고리의 다른 글

[Java]extends와 implements  (0) 2020.07.02

댓글