JSON.parse onverwachte token s

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 somethingte 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 somethingis 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

Other episodes