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.