Node.js 를 배워보자/6. RESTful API 개발

JSON 데이터 처리

_Blue_Sky_ 2024. 10. 1. 08:11
728x90
728x90

JSON 데이터 처리: 자세하고 깊이 있는 설명

JSON이란 무엇인가?

JSON(JavaScript Object Notation)은 데이터를 교환하기 위해 특별히 고안된 경량의 텍스트 기반 데이터 형식입니다. 웹 서비스에서 데이터를 주고받을 때 가장 널리 사용되는 형식 중 하나이며, 그 이유는 다음과 같습니다.

  • 간결하고 읽기 쉽다: 중괄호, 대괄호, 콤마, 콜론과 같은 간단한 문법으로 구성되어 있어 사람이 이해하기 쉽습니다.
  • 다양한 언어에서 지원: JavaScript뿐만 아니라 Python, Java, C# 등 거의 모든 프로그래밍 언어에서 JSON을 자연스럽게 다룰 수 있습니다.
  • 효율적이다: 텍스트 기반이지만, 바이너리 형식에 비해 크기가 작아 네트워크 전송에 유리합니다.

JSON의 기본 구조

JSON은 다음과 같은 두 가지 기본 데이터 구조로 이루어져 있습니다.

  • 객체: 중괄호({})로 묶이며, 이름(key)과 값(value)의 쌍으로 구성됩니다. 이름은 문자열, 값은 문자열, 숫자, 불리언, null, 객체, 배열 중 하나일 수 있습니다.
  • 배열: 대괄호([])로 묶이며, 값들의 순서 있는 목록입니다. 값은 어떤 JSON 값이든 될 수 있습니다.

예시:

{
  "name": "홍길동",
  "age": 30,
  "isStudent": false,
  "address": {
    "city": "서울",
    "street": "강남대로"
  },
  "hobbies": ["독서", "운동", "요리"]
}
 

위 예시에서 name, age, isStudent, address, hobbies는 객체의 이름(key)이고, 각각에 해당하는 값은 문자열, 숫자, 불리언, 객체, 배열입니다.

728x90

JSON 파싱과 스트링화

  • 파싱(Parsing): JSON 문자열을 프로그램에서 사용할 수 있는 데이터 구조(객체 또는 배열)로 변환하는 과정입니다.
  • 스트링화(Stringify): 프로그램의 데이터 구조를 JSON 문자열로 변환하는 과정입니다.

JSON 처리 예제 (JavaScript)

// JSON 문자열
let jsonString = '{"name": "홍길동", "age": 30}';

// 파싱
let jsonObj = JSON.parse(jsonString);
console.log(jsonObj.name); // 홍길동

// 스트링화
let newJsonString = JSON.stringify(jsonObj);
console.log(newJsonString); // {"name":"홍길동","age":30}
 

JSON 활용 분야

  • API: 웹 서비스에서 데이터를 주고받을 때 가장 많이 사용됩니다.
  • 데이터 저장: 설정 파일, 데이터베이스에 데이터를 저장할 때 사용됩니다.
  • 데이터 교환: 서로 다른 시스템 간에 데이터를 교환할 때 사용됩니다.

JSON의 장점과 단점

  • 장점:
    • 간결하고 읽기 쉽다.
    • 다양한 언어에서 지원한다.
    • 효율적이다.
    • 사람이 직접 작성하고 수정하기 쉽다.
  • 단점:
    • 복잡한 데이터 구조를 표현하기에는 한계가 있을 수 있다.
    • 데이터 유효성 검사 기능이 내장되어 있지 않다.

JSON 처리 시 주의할 점

  • 데이터 유효성 검사: JSON 파싱 이전에 데이터의 유효성을 검사해야 합니다.
  • 특수 문자 처리: JSON 문자열 내에 특수 문자(따옴표, 역슬래시 등)가 포함되어 있을 경우 이스케이핑 처리가 필요합니다.
  • 큰 데이터 처리: 대용량 JSON 데이터를 처리할 때는 메모리 사용량에 주의해야 합니다.

결론

JSON은 웹 개발에서 데이터를 주고받을 때 필수적인 도구입니다. 간결하고 효율적인 특징 때문에 다양한 분야에서 활용되고 있습니다. JSON에 대한 이해를 바탕으로 더욱 효과적인 웹 애플리케이션을 개발할 수 있을 것입니다.

 

728x90
728x90