/ / JavaScript JSON parser, ktorý hovorí o polohe chyby - javascript, parsovanie, json

JavaScript analyzátor JSON, ktorý rozpráva chybovú pozíciu - javascript, parsovanie, json

Mám nejaké problémy s analýzou JSON, ktorá je prijatá s WebSocket (pôvodná otázka - Parse JSON prijal s výsledkami WebSocket chybu). Samotný reťazec JSON je platný (testovaný s niekoľkými validátormi JSON), ale JSON.parse uvádza výnimku. Snažím sa zistiť, čo presne nie je možné analyzovať, ale jediná vec, ktorú dostávam je "SyntaxError: unexpected_token ILLEGAL", nehovorí o tom, kde je presná pozícia neúspešného tokenu. Existuje nejaký spôsob, ako získať takéto informácie?

aktualizovať: Ak skopírujem vložený reťazec JSON na statický(napr. "data.json") a potom ju načítať a analyzovať ju s rovnakou funkciou (JSON.parse) - potom to funguje dobre. Takže za predpokladu, že sa tu niečo deje, pomyslel som si na symbol novej rady (možno n bol namiesto rn alebo naopak), ale úplné odstránenie všetkých zlomkov nepomohlo. Myslím si, že je to veľmi dobre môže to byť kódovací problém, ale dáta sú prijímané cez websocket a podľa dokumentácie je to reťazec utf-8.

2. Aktualizácia: IT funguje dobre, ak používam "json_parse" odtiaľto: https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js Potom to funguje dobre! Znamená to, že ide o chybu v implementácii "JSON.parse" používanej prehliadačom Chrome alebo čo?

Ďakujem.

odpovede:

3 pre odpoveď č. 1

Môžete skopírovať implementáciu JSON.(napr. z jQuery), zmeňte jej názov, aby ste ho mohli priamo zavolať, vylaďte implementáciu tak, aby nikdy nezačala vstavaný analyzátor, aby vždy používal analyzátor JS a potom zmeňte kód na použite novú verziu syntaktického analyzátora JS a následne ju prejdite do debuggeru javascript, kým nenájdete to, čo sa vám nepáči.


2 pre odpoveď č. 2

Jedna vec, ktorú treba skontrolovať, je, či máte v rámci reťazca JSON citácie a lomky. Ak áno, musia uniknúť:

{
"key": "i"ve "quotes" in me",
"key2": "and \slashes too"
}

tiež JSONLint poskytuje presnú polohu chyby.

Ako je to JSON.org, nemôžete mať úvodzovky a lomky vo vašich reťazcoch, takže ich musíte uniknúť.

tu zadajte popis obrázku


1 pre odpoveď č. 3

Myslím, že nebudete musieť zavolať JSON.parse:

JSON.parse({"key": "whatever"}) // Syntax Error ILLEGAL

pretože to je už objekt.Já by som tiež zvedavý vidieť výsledok nasledujúceho kódu:

eval("(" + json + ")");

alebo

JSON.parse(decodeURIComponent(json));

0 pre odpoveď č. 4

Nemôžem povedať veľa s podrobnosťami, ale možnosť môže byť, že váš validátor robí nestriktné parsovanie a váš javascript môže robiť prísne analyzovanie ...