Autor | Zpráva | ||
---|---|---|---|
joe Profil |
#1 · Zasláno: 16. 6. 2011, 17:28:20 · Upravil/a: joe
Ahoj,
nějak jsem se zasekl na celkem triviální věci. Mám string a potřebuju z něj dostat objekt. var test = "{id:10}"; // potrebuju ziskat objekt {id:10} console.log($.parseJSON(test)); // hlásí chybu Uncaught Invalid JSON: {id:10} živá ukázka v jQuery zkoušečce. Nechápu proč to nejde, používám stejný způsob při AJAXu a pokud se dívám dobře, data jsou v úplně stejném formátu, ale tady mi to hlásí chybu... Víte někdo čím to je a co s tím udělat, aby to šlo převést (nemusí to být přes jQuery, to je jen pro živou ukázku) Díky |
||
ShiraNai7 Profil |
#2 · Zasláno: 16. 6. 2011, 17:30:32
jQuery.parseJSON('{id:10}') |
||
joe Profil |
#3 · Zasláno: 16. 6. 2011, 17:33:34 · Upravil/a: joe
ShiraNai7:
Je (snad) nějaký rozdíl mezi tím, co jsi poslal a co jsem napsal já? (tady do kódu jsem nepsal to volání té funkce, čekal jsem, že to z toho bude jasné - doplním) |
||
ShiraNai7 Profil |
#4 · Zasláno: 16. 6. 2011, 17:36:41
joe:
Ne, neotevíral jsem to vůbec. Takhle... pokud ti to jde přes jQuery, tak proč to tak neděláš? Další možnosti jsou už jen eval() nebo jiná knihovna. |
||
joe Profil |
#5 · Zasláno: 16. 6. 2011, 17:38:27
ShiraNai7:
Nejde mi to vůbec, ani přes eval, ani přes jQuery |
||
ShiraNai7 Profil |
#6 · Zasláno: 16. 6. 2011, 17:42:36 · Upravil/a: ShiraNai7
joe:
Protože {id:10} není správně formátovaný json řetězec. Správně je {"id": 10} viz http://api.jquery.com/jQuery.parseJSON/ |
||
Chamurappi Profil |
#7 · Zasláno: 16. 6. 2011, 17:42:58
Reaguji na ShiraNaiho7:
„Ne, neotevíral jsem to vůbec.“ Ono je to napsané v prvním příspěvku, nebylo nutné nic otevírat. Reaguji na joa: Nevím, proč nejde ta funkce v jQuery, ale eval("({id: 10})") jede spolehlivě. Kulaté závorky kolem struktury jsou nutné, aby se kód začínající chlupatou závorkou nebral jako blok příkazů.
|
||
joe Profil |
#8 · Zasláno: 16. 6. 2011, 17:51:52
Chamurappi:
„Ono je to napsané v prvním příspěvku“ Nebylo :-) „Kulaté závorky kolem struktury jsou nutné...“ Tak to mi chybělo... ShiraNai7: „Správně je {"id": 10}“ Ahá... Díky, ušetřili jste mi další půl hodiny dumání nad tím, proč to nejde. Ta funkce v jQuery zase funguje bez kulatých závorek a musí tam být ty uvozovky. |
||
Časová prodleva: 3 měsíce
|
|||
Igor Profil |
#9 · Zasláno: 13. 9. 2011, 00:47:48
Mám podobný problém, ale s řetězcem ve formátu pole.
columns = "["cat","html","diff","desc"]"; Zkoušel jsem $.parseJSON() a jQuery.parseJSON() ale obojí dělá chybu, kterou se mi nepovedlo určit. Na těchto stránkách bylo řečeno, že eval() je zlo, tak co mám dělat? |
||
Witiko Profil |
#10 · Zasláno: 13. 9. 2011, 01:12:27 · Upravil/a: Witiko
Igor:
„tak co mám dělat?“ Pochopit, že uvozovky uvnitř řetězce je nutné escapovat? var columns = "[\"cat\",\"html\",\"diff\",\"desc\"]"; „že eval() je zlo“ Divil bych se, kdyby samo jQuery pod kapotou eval v metodě parseJSON nepoužívalo, pokud není dostupná v prohlížeči vestavěná metoda JSON.parse .
|
||
Igor Profil |
#11 · Zasláno: 13. 9. 2011, 08:45:43 · Upravil/a: Igor
Witiko:
Myslíš jako nepsat to ručně? On ten řetězec je vygenerovaný pomocí: ... JSON.stringify(getSelected(\"$columns\"))... ; (Je to část kódu php určené pro html atribut a.onclick, proto je tam dolar a vyescapované uvozovky) „Divil bych se, kdyby samo jQuery pod kapotou eval v metodě parseJSON nepoužívalo“ Asi si chtěl napsat "Divil bych se, kdyby samo jQuery pod kapotou parseJSON eval nepoužívalo." Taky jsem na to myslel, ale tak jestli to nejde jinak, tak eval použiju. |
||
Witiko Profil |
#12 · Zasláno: 13. 9. 2011, 10:22:50 · Upravil/a: Witiko
Igor:
„Asi si chtěl napsat“ To jsem taky napsal, ty věty jsou smyslem totožné. Pokud prohlížeč podporuje nativní objekt JSON , tak bych tipoval že jQuery použije ten, jinak eval .
„jestli to nejde jinak, tak eval použiju.“ Cokoliv vytvořené JSON.stringify je zpětně rozparsovatelné JSON.parse . Dej nám živou ukázku.
|
||
Chamurappi Profil |
#13 · Zasláno: 13. 9. 2011, 11:21:36
Reaguji na Igora:
Pokud je columns javascriptová proměnná, tak nechápu, proč do ní generuješ řetězec s JSONem a ne přímo ten objekt.
|
||
Časová prodleva: 13 let
|
0