[Jackson] JSON 처리를 위한 Jackson Library

728x90
반응형
SMALL

Jackson Library

출처 : https://dundun-dev.tistory.com/3

Spring 개발을 하다 보면, 컨트롤러 text/html 형식이 아닌 데이터 전달 목적으로 사용하고 싶을 때가 있다.

 

물론, plain/text 형식으로 보내도 상관은 없지만, 보통 데이터 구조를 표현하는 방식인 XML 또는 JSON 형태로 보낸다.

 

데이터의 구조를 표현하는 이유는 데이터 표현도 있지만, 사실상 데이터를 사용하는 대상이 편하게 사용하기 위해서다.

 

JacksonJSON 데이터 구조를 처리해주는 라이브러리입니다.

Gradle

// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.2'
2.7 버전부터는 JDK 7 이상이 필요하며 JDK6을 지원하는 마지막 버전은 2.6.7.1이다.

 

ObjectMapper

ObjectMapper mapper = new ObjectMapper(); // create once, reuse

 

 

JSON 데이터를 Java Object로 변환

{
    "name": "hoooon",
    "age": 29
}

 

readValue

MyValue value = mapper.readValue(new File("data.json"), MyValue.class);

value = mapper.readValue(new URL("http://hoooon-s.com/api/test.json"), MyValue.class);
value = mapper.readValue("{\"name\":\"hoooon\", \"age\":29}", MyValue.class);

 

Java Object Convert to JSON

MyValue  myResultObject = new MyValue();
myResultObject.name = "hoooon";
myResultObject.age= 29;

ObjectMapper mapper = new ObjectMapper();
 
// result.json 파일로 저장
mapper.writeValue(new File("result.json"), myResultObject);
byte[] jsonBytes = mapper.writeValueAsBytes(myResultObject);
String jsonString = mapper.writeValueAsString(myResultObject);

 

Jackson Library 없이, JSON 데이터 작성

 

Java 데이터 저장

public class Person {

	private String name;
	private int age;
 
	public Person(String name, int age) {
 		this.name = name;
		this.age = age;
	}
 
	public String getName() {
		return name;
	}
 
 	public int getAge() {
		return age;
	}
 
	public static void main(String[] args) {
		Person person = new Person("blog", 27);
	}
}

 

JSON 데이터 작성

String JSON = "\"{"+
	"\"name\": \"" + person.getName() + "\", "+
	"\"job\": \"" + person.getJob() + "\""+
	"}\"";

 

GSON, SimpleJSON

 

simpleJSON

JSONObject jsonObj = new JSONObject();
jsonObj.put("name", person.getName());
jsonObj.put("age", person.getAge());
 
String JSON = jsonObj.toString();

 

Jackson vs GSON, SimpleJSON

실제 라이브러리에 차이는 존재하지 않지만, Spring 3.0 이후부터, Jackson과 관련된 API를 제공함으로써 Jackson 라이브러리를 사용할 때 자동화 처리가 가능하게 되었다. 이러한 이유로 JSON을 선호한다.

JSON Annotation

  • @JsonIgnoreProperties : JSON으로 변환 (Serialize, Deserialize) 시 제외시킬 속성을 지정, Class 위에 선언
  • @JsonIgnore : 멤버 변수 위에 선언해서 제외 처리
  • @JsonInclude : 값 존재 유무에 따라 Serialize 시 동작을 지정 (default = ALWAYS), Class 위에 선언
    • @JsonInclude(JsonInclude.Include.ALWAYS) : 속성의 값에 의존하지 않고 항상 포함
    • @JsonInclude(JsonInclude.Include.NON_EMPTY) : NULL 또는 빈 값이 아닌 경우 포함
    • @JsonInclude(JsonInclude.Include.NON_NULL) : NULL이 아닌 경우 포함
    • @JsonInclude(JsonInclude.Include.NON_DEFAULT) : Bean의 기본 생성자로 정의된 필드 값과 다르게 변경된 필드만 포함
  • @JsonFormat : 날짜, 시간 값을 직렬화할 때 형식 지정
  • @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss"

 

 

Reference

www.lesstif.com/java/java-json-library-jackson-24445183.html

 

Java Json library jackson 사용법

2.7 버전부터는 JDK 7 이상이 필요하며 JDK6 을 지원하는 마지막 버전은 2.6.7.1 임

www.lesstif.com

github.com/FasterXML/jackson

 

FasterXML/jackson

Main Portal page for the Jackson project. Contribute to FasterXML/jackson development by creating an account on GitHub.

github.com

 

 

 

728x90
반응형
LIST