W Django szablonu Mam wydrukowane dane tak:JSON parse - apostrof wewnątrz nazwy
P.place = '{{place.json|safe}}';
Następnie w pliku JavaScript Mam paring to tak:
place = JSON.parse(P.place);
Wszystko jest w porządku dla danych tak:
{"category": "Cars", "name": "Z"}
Ponieważ ciąg wygląda tak:
P.place = '{"category": "Cars", "name": "Z"}'
Tak, mogę analizować go za pomocą metody JSON.parse i akceptować ciągi jako dane wejściowe.
Problem jest, gdy mam danych tak:
{"category": "Cars", "name": "Wojtek's Z"}
Ponieważ niż ciąg wejściowy dla JSON parsera wygląda tak:
'{"category": "Cars", "name": "Wojtek'
nie mogę uciec pojedynczego cudzysłowu wewnątrz JSON ciąg, bo wtedy JSON ciąg staje się nieprawidłowy. Z tego samego powodu nie mogę zastąpić otaczających cytatów podwójnymi i uciec podwójnymi cudzysłowami w ciągu znaków JSON.
Moje rozwiązanie wygląda tak:
W szablonie HTML:
P.place = {{place.json|safe}};
Następnie w JavaScript
var place = JSON.stringify(P.place);
place = JSON.parse(place);
To działa, ale nie jest to rozwiązanie optymalne IMHO.
Jak rozwiązać ten problem w bardziej sprytny sposób?
MUSISZ cytować apostrofy w JSON, nie ma możliwości obejścia tego. Ale zwykle można uciec przed tym, definiując obiekt za pomocą "\". Lub jeśli wolisz, ucieczka unikodami \ u0027 (chyba). – StaxMan
Nie możesz tego zrobić, sprawdź jsonlint.com i json.org. –
Nie możesz tego zrobić? Sprawdź specyfikację json. – StaxMan