In JSON, 6
ist die Nummer sechs. "6"
ist ein String, der die Ziffer6
enthält. Also die Antwort auf die Frage "Kann JSON Zahlen zitiert werden?" ist im Grunde "nein", denn wenn Sie sie in Anführungszeichen setzen, sind sie keine Zahlen mehr.
Aber sollten die Parser sowohl "attr": 6 als auch attr: "6" akzeptieren?
Das zweite Beispiel ist ungültig, weil attr
in Anführungszeichen gesetzt werden müssen, zB:
{"attr": "6"}
... gültig ist, und definiert ein Objekt mit einer Eigenschaft namens attr
mit dem String Wert "6"
, wobei:
{"attr": 6}
... gültig ist, und definiert ein Objekt mit einer Eigenschaft namens attr
mit dem Nummer Wert 6
und schließlich:
{attr: 6}
... und
{attr: "6"}
... sind beide ungültig JSON, weil Eigenschaftsnamen in doppelten Anführungszeichen angegeben werden müssen.
Wenn MyParser eine Methode hat getInt eine Nummer zu bekommen die Schlüssel gegeben, sollten die Fälle MyParser.getInt („attr“) return 6 in beide oder eine Ausnahme im letzteren Fall werfen?
Das ist eine Design-Entscheidung für die Person ist den Parser bietet, im Grunde der Wahl zwischen getInt
strengen Vorgaben zu machen (wirft eine Ausnahme, wenn Sie es auf "attr": "6"
versuchen) oder lose ("6"
-6
Nötigung und die Rückkehr, dass). JavaScript ist normalerweise locker, und daher könnte es ein Argument dafür geben, dass man locker ist; umgekehrt verursacht die Tatsache, dass JavaScript locker ist, manchmal Probleme, was ein Argument für Strenge sein könnte.