Najpierw trzeba wiedzieć, co jest JSON:
- Jest język agnostyk Format danych interchange.
Składnia JSON została zainspirowana notacją JavaScript Object Literal, ale istnieją między nimi różnice.
Na przykład w JSON wszystkie klucze musi być cytowany, natomiast w literałów obiektowych nie jest to konieczne:
// JSON:
{ "foo": "bar" }
// Object literal:
var o = { foo: "bar" };
Cytaty są obowiązkowe na JSON, ponieważ w JavaScript (dokładniej w ECMAScript 3rd Edition.), korzystanie z zarezerwowanych słów jak nazwy własności jest zabronione, na przykład:
var o = { if: "foo" }; // SyntaxError in ES3
czas, używając ciąg dosłownego jako nazwy właściwości (podając pro Nazwa Perty) daje żadnych problemów:
var o = { "if": "foo" };
Więc dla "zgodność" (i łatwy eval'ing może) cytaty są obowiązkowe?.
typy danych w JSON są ograniczone do następujących wartości:
string
number
object
array
- Dosłowne jako:
Gramatyka Strings
zmian. One muszą być ograniczone przez podwójne cytaty, podczas gdy w JavaScript można używać pojedynczych lub podwójnych cudzysłowów zamiennie.
// Invalid JSON:
{ "foo": 'bar' }
przyjętym JSON gramatyka Numbers
zmienia również w języku JavaScript można użyć szesnastkowego literałów, np 0xFF
lub (niesławny) Octal Literówki np 010
. W JSON możesz używać tylko dziesiętnych literałów.
// Invalid JSON:
{ "foo": 0xFF }
Istnieją pewne implementacje Buggy (Firefox 3.5+ IE8 + json2.js) w literałami ósemkowe błędnie domowe, np JSON.parse('01')
powinien wytworzyć SyntaxError
.
Proszę o jedno pytanie na raz. –
możliwy duplikat [Jaka jest różnica między JSON i Object Literal Notation?] (Http://stackoverflow.com/questions/2904131/what-is-the-difference-between-json-and-object-literal-notation) – Teepeemm