Einleitung
JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat, das in der Webentwicklung weit verbreitet ist, um Informationen zwischen Client und Server zu übertragen. TypeScript, als streng typisierte Obermenge von JavaScript, bietet leistungsstarke Werkzeuge für die sichere und komfortable Arbeit mit JSON. In diesem Artikel werden wir im Detail betrachten, wie man JSON in TypeScript parst und serialisiert, Typen verwendet, um die Korrektheit der Daten sicherzustellen, und typische Fehler vermeidet.
Die korrekte Arbeit mit JSON ist entscheidend für die Erstellung zuverlässiger und skalierbarer Anwendungen. TypeScript ermöglicht es nicht nur, JSON-Strings in Objekte und zurück zu konvertieren, sondern auch zu garantieren, dass die Struktur und die Datentypen den Erwartungen entsprechen. Dies ist besonders nützlich bei der Arbeit mit APIs, Konfigurationsdateien und Datenbanken.
Grundlagen des JSON-Parsings in TypeScript
JSON-Parsing ist der Prozess der Umwandlung eines JSON-Strings in ein TypeScript-Objekt. Dafür wird die globale Methode JSON.parse() verwendet. Im Gegensatz zu JavaScript können wir in TypeScript jedoch den erwarteten Ergebnistyp angeben, was den Code vorhersagbarer macht.
Einfaches Parsing ohne Typen
Ein einfaches Beispiel für das Parsen eines JSON-Strings:
const jsonString = '{"name": "Anna", "age": 30, "city": "Moskau"}';const user = JSON.parse(jsonString);console.log(user.name); // "Anna"In diesem Fall leitet TypeScript den Typ any für die Variable user ab, was die Typsicherheit verringert. Besser ist es, den Typ explizit anzugeben.
Parsing mit Typangabe über ein Interface
Der korrekteste Ansatz ist, ein Interface zu definieren und es beim Parsen zu verwenden:
interface User { name: string; age: number; city: string;}
const jsonString = '{"name": "Anna", "age": 30, "city": "Moskau"}';const user: User = JSON.parse(jsonString);console.log(user.name); // TypeScript weiß, dass dies ein string istDieser Ansatz ermöglicht es der IDE, Autovervollständigung bereitzustellen und Typen zur Kompilierungszeit zu überprüfen.
Fehlerbehandlung beim Parsen
JSON-Strings können fehlerhaft sein, daher ist es wichtig, Ausnahmen zu behandeln:
function safeParseJSON<T>(json: string): T | null { try { return JSON.parse(json) as T; } catch (error) { console.error('JSON-Parsing-Fehler:', error); return null; }}
const invalidJson = '{"name": "Anna", age: 30}'; // Ungültiges JSONconst result = safeParseJSON<User>(invalidJson);if (result) { console.log(result.name);} else { console.log('JSON konnte nicht geparst werden');}Die Funktion safeParseJSON akzeptiert einen generischen Parameter, was ihre Wiederverwendung für verschiedene Datentypen ermöglicht.
Serialisierung von Objekten in JSON
Serialisierung ist der umgekehrte Prozess der Umwandlung eines TypeScript-Objekts in einen JSON-String. Dafür wird die Methode JSON.stringify() verwendet. TypeScript fügt dieser Methode keine neuen Funktionen hinzu, hilft aber dabei zu kontrollieren, welche Daten in den resultierenden String gelangen.
Basis-Serialisierung
const user: User = { name: "Ivan", age: 25, city: "Sankt Petersburg"};
const jsonString = JSON.stringify(user);console.log(jsonString); // {"name":"Ivan","age":25,"city":"Sankt Petersburg"}Verwendung von replacer zur Feld-Filterung
Der zweite Parameter von JSON.stringify() ist eine replacer-Funktion, die es ermöglicht zu kontrollieren, welche Felder in das Ergebnis aufgenommen werden:
const jsonStringFiltered = JSON.stringify(user, (key, value) => { if (key === 'age') { return undefined; // Feld age ausschließen } return value;});console.log(jsonStringFiltered); // {"name":"Ivan","city":"Sankt Petersburg"}Dies ist nützlich, wenn sensible Daten ausgeblendet oder die Größe der übertragenen Informationen reduziert werden sollen.