프론트엔드/JavaScript

JSON

Ryuzy 2025. 4. 16. 23:52
728x90
반응형

1. JSON

JSON(JavaScript Object Notation)은 자바스크립트 객체 표기법을 기반으로 한 데이터 교환 형식으로, 사람도 읽기 쉽고 기계도 쉽게 분석하고 생성할 수 있는 텍스트 기반의 데이터 포맷입니다. 일반적으로 서버와 클라이언트 간에 데이터를 주고받을 때 많이 사용되며, 구조는 키-값 쌍으로 이루어진 객체 형태나 배열 형태를 사용합니다. 자바스크립트에서는 JSON.stringify()를 사용해 객체를 JSON 문자열로 변환하고, JSON.parse()를 사용해 JSON 문자열을 다시 객체로 변환할 수 있습니다. 언어에 독립적이면서도 자바스크립트와 호환성이 뛰어나 웹 개발뿐만 아니라 다양한 API 통신, 데이터 저장 및 전송 등에 널리 활용됩니다.

 

 

2. JSON 문법 구조

1. 객체(Object)

  • 중괄호 {} 사용
  • 내부에 "key": value 형식으로 속성-값 쌍을 나열
  • 각 쌍은 쉼표 ,로 구분
  • 값으로는 문자열, 숫자, 불리언, 배열, 객체 모두 가능
{
  "name": "김사과",
  "age": 20,
  "isStudent": true,
  "skills": ["HTML", "CSS", "JavaScript"]
}

 

2. 배열(Array)

  • 대괄호 [] 사용
  • 여러 개의 값을 순서대로 나열
  • 요소는 숫자, 문자열, 객체 등 다양한 데이터 가능
[
  "사과",
  "바나나",
  "오렌지"
]

 

3. JSON 안에 JSON (중첩 구조)

  • 객체 안에 객체, 객체 안에 배열도 가능
  • 실제 API 응답이나 설정 파일에서 많이 사용됨
{
  "name": "김사과",
  "address": {
    "city": "서울",
    "zipcode": "12345"
  },
  "skills": ["HTML", "CSS", "JavaScript"]
}

 

4. JSON 규칙 (중요)

  • 문자열은 반드시 큰따옴표 " ", 작은따옴표 ' '는 에러 발생
  • 키(key)도 반드시 쌍따옴표 " "로 감싸야 함
  • 값(value)에는 객체, 배열, 문자열, 숫자, 불리언, null 사용 가능
  • 마지막 항목 뒤에는 쉼표 금지
  • JSON은 순수 데이터 형식이기 때문에 //, /* */ 같은 주석 사용 불가

 

 

3. JSON에서 허용되는 데이터 타입

 

 

4. 자바스크립트에서 JSON 사용

1. JSON 객체를 문자열로 변환 (JSON.stringify())

객체를 문자열로 변환하면 서버에 전송하기 쉬워집니다.

const user = {
  name: "김사과",
  age: 20
};

const jsonStr = JSON.stringify(user);
console.log(jsonStr);

 

2. JSON 문자열을 자바스크립트 객체로 변환 (JSON.parse())

서버에서 받은 JSON 데이터를 실제로 사용할 수 있는 자바스크립트 객체로 변환

const jsonStr = '{"name":"김사과","age":20}';
const userObj = JSON.parse(jsonStr);

console.log(userObj.name);

 

3. JSON 데이터를 HTML에 출력하기

JSON 형태의 데이터를 DOM에 출력

<div id="info"></div>

<script>
  const user = {
    name: "김사과",
    age: 20,
    job: "프론트엔드 개발자"
  };

  const container = document.getElementById("info");
  container.innerHTML = `
    <p>이름: ${user.name}</p>
    <p>나이: ${user.age}</p>
    <p>직업: ${user.job}</p>
  `;
</script>

 

4. JSON 배열을 HTML 목록으로 출력하기

JSON 배열을 순회하며 <li> 요소로 출력합니다.

<ul id="fruits"></ul>

<script>
  const fruits = ["사과", "바나나", "포도"];
  const list = document.getElementById("fruits");

  fruits.forEach(fruit => {
    const li = document.createElement("li");
    li.textContent = fruit;
    list.appendChild(li);
  });
</script>

 

5. 중첩된 JSON 정보 출력

중첩된 객체 user.address.city에 접근하는 방법

<div id="profile"></div>

<script>
  const user = {
    name: "김사과",
    age: 20,
    address: {
      city: "서울",
      zip: "12345"
    }
  };

  const div = document.getElementById("profile");
  div.innerHTML = `
    <p>이름: ${user.name}</p>
    <p>도시: ${user.address.city}</p>
    <p>우편번호: ${user.address.zip}</p>
  `;
</script>

 

6. 입력값을 JSON 객체로 만들기

폼 입력값으로 JSON 객체를 만들고 문자열로 변환

<input type="text" id="nameInput" placeholder="이름 입력">
<input type="number" id="ageInput" placeholder="나이 입력">
<button onclick="saveUser()">저장</button>

<script>
  function saveUser() {
    const name = document.getElementById("nameInput").value;
    const age = document.getElementById("ageInput").value;

    const user = {
      name: name,
      age: Number(age)
    };

    console.log("JSON 문자열:", JSON.stringify(user));
  }
</script>

 

7. JSON 배열 → HTML 테이블 생성

JSON 배열을 반복해서 테이블 형태로 출력

<table border="1" id="userTable">
  <thead>
    <tr><th>이름</th><th>나이</th></tr>
  </thead>
  <tbody></tbody>
</table>

<script>
  const users = [
    { name: "김사과", age: 20 },
    { name: "반하나", age: 25 },
    { name: "오렌지", age: 30 }
  ];

  const tbody = document.querySelector("#userTable tbody");

  users.forEach(user => {
    const row = `<tr><td>${user.name}</td><td>${user.age}</td></tr>`;
    tbody.innerHTML += row;
  });
</script>

 

728x90
반응형

'프론트엔드 > JavaScript' 카테고리의 다른 글

Promise 기반 API  (1) 2025.04.17
브라우저에 데이터 저장하기  (0) 2025.04.17
정규식  (0) 2025.04.16
이벤트  (0) 2025.04.16
Document Object Model  (0) 2025.04.15