TypeScript:
Praca z JSON

Jak:

Parsowanie JSON-a na obiekt TypeScript

Aby przekonwertować ciąg JSON na obiekt TypeScript, używa się metody JSON.parse(). Jest to przydatne przy odbieraniu danych JSON z serwera sieciowego lub czytaniu pliku JSON.

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

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

Zmiana obiektu TypeScript na ciąg JSON

Aby przekonwertować obiekt TypeScript na ciąg JSON, używa się metody JSON.stringify(). Jest to szczególnie przydatne, gdy potrzebujesz wysłać dane do serwera sieciowego.

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

const jsonStr = JSON.stringify(person);

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

Praca z interfejsami

Można zdefiniować interfejsy TypeScript, aby pracować bezproblemowo z danymi JSON, zapewniając strukturę twoich obiektów.

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

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

console.log(person.age); // Wynik: 28

Korzystanie z popularnych bibliotek firm trzecich

W bardziej złożonych scenariuszach, takich jak walidacja schematu lub transformacja, można sięgnąć po biblioteki takie jak class-transformer lub AJV (Another JSON Schema Validator).

class-transformer

Ta biblioteka umożliwia transformowanie zwykłych obiektów na instancje klas i odwrotnie, co jest przydatne dla sprawdzania typów i manipulacji.

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); // Wynik: true
console.log(person.name); // Wynik: Mia

AJV

AJV to biblioteka, która umożliwia szybką walidację schematu JSON. Oznacza to, że możesz sprawdzać obiekty JSON względem predefiniowanych schematów.

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); // Wynik: true
if (!valid) console.log(validate.errors);

Z tymi narzędziami i technikami możesz efektywnie radzić sobie z danymi JSON w swoich aplikacjach TypeScript, zapewniając integralność danych i wykorzystując potężny system typów TypeScript.