코딩이야기/JavaScript
[JSON] Javascript 에서 배열을 이용해 json 파일 형식처럼 만드는 방법 연습하기 -2-
이민재
2023. 2. 23. 00:08
지난번 포스팅에 이어서 짧은 포스팅을 추가로 올리려고 한다.
지금 하는 작업은 하드 코딩에 가깝지만, 응용한다면 데이터를 가공하는데 도움이 될 것이라 생각한다.
// 데이터 가공해서 또 다른 Json 만들기 연습
// 학생, 학년, 학급, 학생 객체를 생성합니다.
let students = new Object();
let gradesX = new Object();
let classesX = new Object();
let studentX = new Array();
// 학생의 수만큼 k 변수로 반복문 돌립니다.
for(let k = 0; k<3; k++){
let name = "";
if( k%3 == 0 ){ name = "철수";
}else if(k%3 == 1){ name = "영희";
}else name = "동규";
let studentIndex = {
student_name : `${name}${k}`,
student_height : Math.floor( (Math.random() * 120) ) + k,
student_average : Math.floor( (Math.random() * 80) ) + k,
student_report : 0 + k
}
studentX.push(studentIndex);
} // k 변수 for문 종료
// classesX 객체에 key = student 에 value로 studentX 배열을 넣는다.
classesX.student = studentX;
// studentX 는 배열로 만들어둬서
/* classesX.student.description = "공부를 다들 열심히 합니다." */
// 와 같이 key, value를 추가할 수 없습니다.
// gradesX 객체에 key = class1 에 value로 바로 위의 classesX 객체를 넣는다. (객체 안에 객체 혹은 배열을 넣을 수 있다.)
gradesX.class1 = classesX;
// gradesX 객체에 key = class1 에 key가 teacher, 급훈인 value를 하나씩 넣는다. 우항은 string 값을 이용할 수 있어서 변수 혹은 for문 안에서도 가능하다.
gradesX.class1.teacher = "이민정쌤";
gradesX.class1.급훈 = "최선을 다하자";
// 위의 gradeX 객체를 students 객체의 key = grade1 의 value에 할당해준다.
students.grade1 = gradesX;
// 이외에 추가할만한 key, value를 할당해준다.
students.grade1.학주선생님 = "무서운 학주쌤";
// 아까 설정해둔 곳으로 접근해서 key, value 추가도 가능하다.
students.grade1.class1.특이사항 = "쉬는 시간엔 시끄럽지만 수업 때는 열심히 합니다.";
// 위와 비슷하게 학년 하나를 더 가공해봅니다.
// 원래라면 학생을 request로 얻어오던지 함수를 이용해서 다르게 하는게 맞지만 test를 위한 과정이라 같은 더미데이터를 사용하겠습니다.
let class2 = new Object();
class2 = classesX;
class2.teacher = "배용준쌤";
class2.급훈 = "잘생긴게 최고다";
students.grade1.class2 = class2;
students.description = "오지고 학생들";
console.log( JSON.stringify( students ) );
결과는 다음과 같다
{
"grade1": {
"class1": {
"student": [
{
"student_name": "철수0",
"student_height": 19,
"student_average": 63,
"student_report": 0
},
{
"student_name": "영희1",
"student_height": 57,
"student_average": 25,
"student_report": 1
},
{
"student_name": "동규2",
"student_height": 13,
"student_average": 77,
"student_report": 2
}
],
"teacher": "배용준쌤",
"급훈": "잘생긴게 최고다",
"특이사항": "쉬는 시간엔 시끄럽지만 수업 때는 열심히 합니다."
},
"학주선생님": "무서운 학주쌤",
"class2": {
"student": [
{
"student_name": "철수0",
"student_height": 19,
"student_average": 63,
"student_report": 0
},
{
"student_name": "영희1",
"student_height": 57,
"student_average": 25,
"student_report": 1
},
{
"student_name": "동규2",
"student_height": 13,
"student_average": 77,
"student_report": 2
}
],
"teacher": "배용준쌤",
"급훈": "잘생긴게 최고다",
"특이사항": "쉬는 시간엔 시끄럽지만 수업 때는 열심히 합니다."
}
},
"description": "오지고 학생들"
}