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.