728x90
objectMapper
- 스프링에 빈으로 등록이 되어있다.
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 |
---|
댓글