Zum Hauptinhalt springen

Appendix A. Frequently Asked Questions (Häufig gestellte Fragen)

A.1 Why Not JSON? (Warum nicht JSON?)​

Frühe Vorschläge für strukturierte Felder basierten auf JSON [RFC8259]. Die Einschränkung seiner Verwendung zur Anpassung an HTTP-Header-Felder erforderte jedoch, dass Sender und Empfänger eine spezifische zusätzliche Verarbeitung implementieren.

Probleme mit JSON​

1. Kanonisierungsprobleme

  • Große Zahlen (überschreiten JavaScripts sicheren Bereich)
  • Objekte mit doppelten Mitgliedern (Verhalten undefiniert)

2. Unicode-Strings

  • Potenzielle Interoperabilitätsprobleme bei Vergleichen
  • Verschiedene Unicode-Darstellungen für dasselbe Zeichen

3. Beliebige Verschachtelungstiefe

  • Unangemessene Speicherverpflichtungen
  • Muss irgendwie begrenzt werden
  • Vorhandene JSON-Implementierungen haben keine solchen Grenzen

4. Implementierungsversuchung

  • Schwierig, zusätzliche Einschränkungen durchzusetzen
  • Menschen neigen dazu, JSON-Parser auf Feldwerten zu verwenden

Fazit​

Diese Bedenken führten zur Annahme eines Formats, das dedizierte Parser und Serialisierer erfordert, da das Hauptziel darin bestand, Interoperabilität zu verbessern und Implementierung zu vereinfachen.


Vergleichstabelle​

MerkmalJSONRFC 8941
ZahlenbereichUndefiniertKlar definiert (15 Ziffern)
DezimalpräzisionUndefiniert3 Ziffern
UnicodeStandardNur ASCII
TiefeUnbegrenztAuf 2 Ebenen begrenzt
Doppelte SchlüsselUndefiniertExplizit verboten
HTTP-AnpassungSchlechtAusgezeichnet

Praktisches Beispiel​

JSON-Ansatz (problematisch)​

Example-Header: {"priority": 1, "timeout": 3.14159, "enabled": true}

RFC 8941-Ansatz (empfohlen)​

Example-Header: priority=1, timeout=3.142, enabled

Vorteile: Klare Typdefinition, vorhersagbares Verhalten, passt natürlich zu HTTP.