Czy w nazwach kluczy są jakieś niedozwolone znaki dla obiektów JavaScript lub ciągów JSON? Albo postacie, którym trzeba uciec?
Mówiąc dokładniej, chciałbym użyć „$”, „-” i spacji w nazwach kluczy.
javascript
json
object
key
Christophe
źródło
źródło
obj['whatever']
notacji. Ale dlaobj.whatever
wersji można używać tylko zwykłych klawiszy alfanumerycznych .Odpowiedzi:
Nie. Każdy poprawny ciąg jest prawidłowym kluczem. Może nawet mieć
"
tak długo, jak uciekniesz:Być może jest szansa, że napotkasz trudności z ładowaniem takich wartości do niektórych języków, które próbują skojarzyć klucze z nazwami pól obiektów. Nie znam jednak takich przypadków.
źródło
\u four-hex-digits
formie).Następujące znaki muszą zostać zmienione w danych JSON, aby uniknąć problemów
JSON Parser może pomóc w radzeniu sobie z JSON.
EDYCJA: Oto zastępczy parser JSON, ponieważ łącze OP jest martwe
źródło
{ "singlequotetest": "something here isn\'t right"}
porównanie JSON{ "singlequotetest": "Fixing here what wasn't right"}
{"🐶🔫": "not nice, but still valid json"}
Warto wspomnieć, że uruchomienie kluczy numerami może spowodować niezamierzone problemy.
Przykład:
źródło
Należy unikać punktów kodowych Unicode U + D800 do U + DFFF: są one nieprawidłowe w Unicode, ponieważ są zarezerwowane dla zastępczych par UTF-16. Niektóre kodery / dekodery JSON zastąpią je U + FFFD. Zobacz na przykład, jak radzi sobie z nimi język Go i jego biblioteka JSON .
Dlatego unikaj samych „\ uD800” do „\ uDFFF” (nie w parach zastępczych).
źródło