Zum Inhalt springen

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

  1. Füge ein JSON-Objekt in den Editor ein.
  2. Prüfe die @property-Zeilen rechts: Die Typen stammen aus den Beispielwerten, zum Beispiel string[] für tags und object für address.
  3. 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.

Spezifikationen und Referenzen