class 모델링 없이 직접 json을 만들어 사용
dependencies {
// GSON
implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
}
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@RestController
public class TestController {
@GetMapping(value = "/message2")
public String testByResponseBody2() {
JsonObject testjs = new JsonObject();
testjs.addProperty("a", "anlysis");
testjs.addProperty("c", new Date().toString());
JsonArray testja = new JsonArray();
for(int i=0; i<5; i++) {
JsonObject testbj = new JsonObject();
testbj.addProperty("test"+i, i);
testja.add(testbj);
}
testjs.add("follower", testja);
return testjs.toString();
}
}
annotation 을 사용하여 class 변수를 자동으로 json 형태로 변환
Class 에 @RestController 가 있어야함
Class 에 @Controller 가 붙어있다면 Function 에 @ResponseBody 가 있어야 Object 반환 가능
TestModel.java
import java.util.Date;
// 데이트타임 포맷
import com.fasterxml.jackson.annotation.JsonFormat;
// return에서 제외할 경우
import com.fasterxml.jackson.annotation.JsonIgnore;
// 조건에 따라 return
import com.fasterxml.jackson.annotation.JsonInclude;
// json key 값을 수정해서 보냄
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@JsonInclude(JsonInclude.Include.NON_NULL)
public class TestModel {
@JsonIgnore
public String projectName;
@JsonProperty(value = "testValue")
public String author;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
public Date createdDate;
}