W JSON, 6
jest numerem sześć. "6"
to ciąg zawierający cyfrę 6
. Tak więc odpowiedź na pytanie "Czy można podać liczby jsonów?" jest w zasadzie "nie", ponieważ jeśli umieścisz je w cudzysłowach, nie są już liczbami.
Ale czy parsery powinny przyjmować zarówno "attr": 6 i attr: "6"?
Drugim przykładem jest nieważny, ponieważ attr
musi być w cudzysłowie, np:
{"attr": "6"}
... jest ważny, a definiuje obiekt o właściwość o nazwie attr
z strun wartości "6"
, ale:
{"attr": 6}
... jest ważny i definiuje obiekt o właściwości o nazwie attr
o wartości liczba6
i wreszcie:
{attr: 6}
... i
{attr: "6"}
... są zarówno nieważne JSON ponieważ nazwy właściwości muszą być w cudzysłowach.
Jeśli MyParser ma metodę getInt aby uzyskać numer podany klucz, powinny MyParser.getInt („attr”) return 6 w obu przypadkach, czy wyjątek w tym ostatnim przypadku?
To jest decyzja projektowa dla osoby wnoszącej parser, w zasadzie wybór pomiędzy getInt
jest ścisłe (rzuca wyjątek, jeśli spróbujesz go na "attr": "6"
) lub luzem (zmuszanie "6"
do 6
i powrót tego). JavaScript jest zwykle luźny, więc może istnieć argument za byciem luźnym; z drugiej strony fakt, że JavaScript jest luźny, czasami powoduje problemy, co może być argumentem za byciem surowym.