1. JSON 이란
- JSON : JavaScript Object Notation
- 데이터 저장, 전송 등에 사용되는 데이터 교환 형식
- 서버와 클라이언트 사이의 데이터 교환에 주로 사용됨
- 키 : 값 형태를 가짐
- ex : "name": "홍길동"
2. 기본 클래스 및 예제 설명
- 예제에 사용될 기본적인 클래스 생성
2-1. Student
- ArrayList를 포함한 클래스
@Getter
@Setter
@AllArgsConstructor
public class Student {
public String name;
public String password;
public int age;
public ArrayList<String> classes = new ArrayList<>();
public Student() {
}
}
2-2. StudentDto
- api 통신을 위해 사용되는 DTO
- 비밀번호는 개인정보 보호 관계로 전송하지 않는다고 설정
- 비밀번호를 제외한 나머지 정보를 담는 dto
@Data
@AllArgsConstructor
public class StudentDto {
public String name;
public int age;
public ArrayList<String> classes;
public StudentDto(Student student) {
this.name = student.getName();
this.age = student.getAge();
this.classes = student.getClasses();
}
}
2-3. 예제 설명
- postman 을 통해서 json 데이터 송수신
- Student 클래스를 통해서 학생의 정보를 다룸
- 송신(단일 객체, 다중 객체) 와 수신(단일 객체, 다중 객체) 를 다룸
3. 단일 객체 송신
- 학생 정보 1개 전송
@RestController
public class StudentController {
@GetMapping("/student")
public StudentDto getOneStudent() {
Student student = new Student("홍길동", "password1234", 23,
new ArrayList<>(Arrays.asList("수업1", "수업2", "수업3")));
return new StudentDto(student);
}
}
- 실행 결과
4. 다중 객체 송신
- 학생 정보 여러개 전송
@GetMapping("/students")
public List<StudentDto> getStudents() {
Student student1 = new Student("짱구", "password1234", 24,
new ArrayList<>(Arrays.asList("수업1","수업2","수업3")));
Student student2 = new Student("철수", "1234", 26,
new ArrayList<>(Arrays.asList("수업2","수업4","수업5")));
Student student3 = new Student("영희", "aabbcc", 20,
new ArrayList<>(Arrays.asList("수업4","수업6")));
ArrayList<StudentDto> students = new ArrayList<>();
students.add(new StudentDto(student1));
students.add(new StudentDto(student2));
students.add(new StudentDto(student3));
return students;
}
- 실행 결과
5. 단일 객체 수신
- 학생 정보 1개 수신
@PostMapping("/student")
public String postStudent(@RequestBody Student student) {
String result = String.format("[학생 정보]\n" + "학생 이름 : %s\n나이 : %d\n수업 : %s",
student.getName(), student.getAge(),student.getClasses());
return result;
}
- 실행 결과
6. 다중 객체 수신
- 학생 정보 여러개 수신
@PostMapping("/students")
public String postStudents(@RequestBody List<Student> studentList) {
String result = "[학생 정보]\n";
int index = 1;
for (Student student : studentList) {
result += String.format("%d번 학생\n", index++);
result += String.format("학생 이름 : %s\n나이 : %d\n수업 : %s\n\n",
student.getName(), student.getAge(),student.getClasses());
}
return result;
}
- 실행 결과
'Spring Boot' 카테고리의 다른 글
[Spring Boot] 원하는 시간에 특정 코드 자동 실행시키기 (@Scheduled) (0) | 2024.03.26 |
---|---|
[Spring Boot] JSON String , Object 변환 (JSONParser, Gson, object-mapper) (1) | 2024.03.16 |
[Spring Boot] JaCoCo로 테스트 커버리지 확인 (3) | 2024.01.30 |
[Spring Boot] 로그인 기능 구현 (8) - 페이스북 로그인 (OAuth 2.0) (0) | 2024.01.14 |
[Spring Boot] 로그인 기능 구현 (7) - 네이버 로그인 (OAuth 2.0) (1) | 2024.01.14 |