Waarom is het dat wanneer ik dat doe:-
JSON.parse('"something"')
het parseert prima, maar als ik dat doe:-
var m = "something";
JSON.parse(m);
het geeft me een foutmelding:-
Unexpected token s
Antwoord 1, autoriteit 100%
Je vraagt het om de JSON-tekst something
te ontleden (niet "something"
). Dat is ongeldige JSON, strings moeten tussen dubbele aanhalingstekens staan.
Als je een equivalent van je eerste voorbeeld wilt:
var s = '"something"';
var result = JSON.parse(s);
Antwoord 2, autoriteit 26%
Wat u doorgeeft aan de JSON.parse-methode moet een geldige JSON zijn na het verwijderen van de aanhalingstekens voor string.
dus something
is geen geldige JSON, maar "something"
wel.
Een geldige JSON is –
JSON = null
/* boolean literal */
or true or false
/* A JavaScript Number Leading zeroes are prohibited; a decimal point must be followed by at least one digit.*/
or JSONNumber
/* Only a limited sets of characters may be escaped; certain control characters are prohibited; the Unicode line separator (U+2028) and paragraph separator (U+2029) characters are permitted; strings must be double-quoted.*/
or JSONString
/* Property names must be double-quoted strings; trailing commas are forbidden. */
or JSONObject
or JSONArray
Voorbeelden –
JSON.parse('{}'); // {}
JSON.parse('true'); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null'); // null
JSON.parse("'foo'"); // error since string should be wrapped by double quotes
Mogelijk wilt u JSON .
Antwoord 3, Autoriteit 9%
Variabelen (something
) zijn niet Geldig JSON, verifiëren met behulp van http://jsonlint.com/
Antwoord 4, Autoriteit 3%
Geldige JSON-string moet een dubbele offerte hebben.
JSON.parse({"u1":1000,"u2":1100}) // will be ok
Geen offerte Oorzaak Fout
JSON.parse({u1:1000,u2:1100})
// error Uncaught SyntaxError: Unexpected token u in JSON at position 2
Single QUOTE OORZAAK FOUT
JSON.parse({'u1':1000,'u2':1100})
// error Uncaught SyntaxError: Unexpected token u in JSON at position 2
U moet JSON String op https://jsonlint.com
Antwoord 5, Autoriteit 2%
Omdat JSON een string-gegevenstype heeft (dat praktisch alles is tussen "
en "
). Het heeft geen gegevenstype die overeenkomt met something