TypeScript:
JSON과 함께 일하기

어떻게 하나:

JSON을 TypeScript 객체로 파싱하기

JSON 문자열을 TypeScript 객체로 변환하려면 JSON.parse() 메서드를 사용합니다. 이는 웹 서버에서 JSON 데이터를 받거나 JSON 파일을 읽을 때 유용합니다.

const jsonStr = '{"name": "John Doe", "age": 30}';
const obj = JSON.parse(jsonStr);

console.log(obj.name); // 출력: John Doe

TypeScript 객체를 JSON 문자열로 변경하기

TypeScript 객체를 JSON 문자열로 변환하려면 JSON.stringify() 메서드를 사용합니다. 이는 웹 서버에 데이터를 보낼 필요가 있을 때 특히 유용합니다.

const person = {
  name: "Jane Doe",
  age: 25,
};

const jsonStr = JSON.stringify(person);

console.log(jsonStr); // 출력: {"name":"Jane Doe","age":25}

인터페이스 사용하기

TypeScript 인터페이스를 정의하여 객체의 구조를 보장함으로써 JSON 데이터와 원활하게 작업할 수 있습니다.

interface Person {
  name: string;
  age: number;
}

const jsonStr = '{"name": "Alex", "age": 28}';
const person: Person = JSON.parse(jsonStr);

console.log(person.age); // 출력: 28

인기 있는 타사 라이브러리 사용하기

스키마 검증이나 변환과 같이 더 복잡한 시나리오의 경우, class-transformer 또는 AJV(Another JSON Schema Validator)와 같은 라이브러리를 사용할 수 있습니다.

class-transformer

이 라이브러리는 일반 객체를 클래스 인스턴스로 변환하거나 그 반대로 할 수 있는데, 이는 타입 검사와 조작에 유용합니다.

import "reflect-metadata";
import { plainToClass } from "class-transformer";
import { Person } from "./person";

const jsonStr = '{"name": "Mia", "age": 22}';
const person = plainToClass(Person, JSON.parse(jsonStr));

console.log(person instanceof Person); // 출력: true
console.log(person.name); // 출력: Mia

AJV

AJV는 빠른 JSON 스키마 검증을 가능하게 하는 라이브러리입니다. 이는 JSON 객체를 미리 정의된 스키마에 대응하여 검증할 수 있음을 의미합니다.

import Ajv from "ajv";

const ajv = new Ajv();

const schema = {
  type: "object",
  properties: {
    name: { type: "string" },
    age: { type: "number" },
  },
  required: ["name", "age"],
  additionalProperties: false,
};

const validate = ajv.compile(schema);
const valid = validate({ name: "Tom", age: 24 });

console.log(valid); // 출력: true
if (!valid) console.log(validate.errors);

이러한 도구와 기법을 사용함으로써, TypeScript 애플리케이션에서 JSON 데이터를 효율적으로 처리하면서 데이터의 무결성을 보장하고 TypeScript의 강력한 타입 시스템을 활용할 수 있습니다.