JSON in JSDoc-Kommentare umwandeln — Numio
Erstellt aus einem JSON-Beispiel einen JSDoc-@typedef-Kommentar mit einer @property-Zeile pro Schlüssel. Verschachtelte Schlüssel verwenden Punktpfade wie address.city, Schlüssel von Array-Elementen name[].key und optionale Schlüssel [eckige Klammern].
Autovervollständigung im Editor für eine API-Antwort in einem reinen JavaScript-Projekt erhalten.
JSON
JSDoc
Wann sie hilft
- Autovervollständigung im Editor für eine API-Antwort in einem reinen JavaScript-Projekt erhalten.
- Typprüfung mit // @ts-check für JSON-Daten aktivieren, ohne auf TypeScript umzusteigen.
Anwendung
- Füge ein JSON-Objekt in den Editor ein.
- Prüfe die @property-Zeilen rechts: Die Typen stammen aus den Beispielwerten, zum Beispiel string[] für tags und object für address.
- Kopiere den Kommentar, benenne den typedef von json in einen echten Namen um und verwende ihn mit @type {YourName}.
JSON-Eingabe
{
"id": 42,
"name": "Ada",
"tags": ["math", "poetry"],
"address": { "city": "London", "zip": "NW1" },
"orders": [
{ "sku": "A1", "qty": 2 },
{ "sku": "B7", "qty": 1, "gift": true }
],
"deletedAt": null
}JSDoc @typedef
/**
* @typedef {object} json
* @property {number} id
* @property {string} name
* @property {string[]} tags
* @property {object} address
* @property {string} address.city
* @property {string} address.zip
* @property {object[]} orders
* @property {string} orders[].sku
* @property {number} orders[].qty
* @property {boolean} [orders[].gift]
* @property {null} deletedAt
*/Details und Einschränkungen
Der Kommentar wird in deinem Browser erzeugt; es werden keine Daten an einen Server gesendet. Es gibt keine Einstellungen.
Alle Elemente eines Arrays werden zusammengeführt: Schlüssel, die in einigen Elementen fehlen, werden als optional in eckigen Klammern geschrieben, etwa [orders[].gift].
Ein Wert, der nur null ist, wird als {null} typisiert; null neben echten Werten ergibt eine Union wie {string|null}. Leere Arrays werden als {Array} typisiert.
Belasse IDs wie 001 in der Eingabe als Strings; als Zahlen geparst gehen die führenden Nullen verloren.
FAQ
Wie werden Arrays von Objekten dokumentiert?
Das Array wird als object[] typisiert, und die Schlüssel der Elemente werden mit name[].key-Pfaden aufgeführt, etwa orders[].sku, wobei die Schlüssel aller Elemente kombiniert werden.
Kann ich ein JSON-Array auf oberster Ebene umwandeln?
Ja. Die Elementform wird zu @typedef {object} jsonItem mit ihren Properties, gefolgt von @typedef {jsonItem[]} json für das Array.
Versteht TypeScript den erzeugten typedef?
Ja, TypeScript liest @typedef mit verschachtelten @property-Pfaden in .js-Dateien, wenn checkJs oder // @ts-check aktiviert ist. Ersetze ein bloßes {null} vorher durch den echten Typ.