Czy ktoś może mi powiedzieć najszybszy sposób, aby przetworzyć ciąg json do obiektu bez jquery? Chcę przetworzyć ciąg json w tagu skryptu przed załadowaniem jQuery.Najszybszy sposób analizowania ciągów json (bez jquery)
Z góry dziękuję!
Peter
Czy ktoś może mi powiedzieć najszybszy sposób, aby przetworzyć ciąg json do obiektu bez jquery? Chcę przetworzyć ciąg json w tagu skryptu przed załadowaniem jQuery.Najszybszy sposób analizowania ciągów json (bez jquery)
Z góry dziękuję!
Peter
Zastosowanie JSON JS
Aby przekonwertować tekst JSON do obiektu, można skorzystać z funkcji eval(). eval() wywołuje kompilator JavaScript. Ponieważ JSON jest prawidłowym podzbiorem JavaScript, kompilator poprawnie przeanalizuje tekst i stworzy strukturę obiektu. Tekst musi być zawijany w pareny, aby uniknąć potykania się o niejasności w składni JavaScript.
var myObject = eval('(' + myJSONtext + ')');
Może to być niebezpieczne, ponieważ spowoduje wykonanie dowolnego JS. Jeśli Twój JSON jest generowany z treści przesłanych przez użytkownika, możesz otworzyć się na ataki XSS. – Spycho
Tak, oczywiście, nie powinieneś robić niczego takiego bez odpowiedniej weryfikacji ... –
OP poprosił o najszybszą, o ile nam wiadomo, OP kontroluje zawartość za znacznikiem skryptu. Dobry komentarz. –
var myObject = eval('(' + myJSONtext + ')');
Funkcja eval jest bardzo szybka. Może jednak skompilować i wykonać dowolny program JavaScript, więc mogą wystąpić problemy z bezpieczeństwem. Korzystanie z eval jest wskazane, gdy źródło jest zaufane i kompetentne. O wiele bezpieczniej jest używać parsera JSON. W aplikacjach internetowych przez XMLHttpRequest komunikacja jest dozwolona tylko dla tego samego pochodzenia, które udostępnia tę stronę, więc jest zaufana. Ale może nie być kompetentny. Jeśli serwer nie jest rygorystyczny w swoim kodowaniu JSON lub nie skrupulatnie sprawdza wszystkie swoje dane wejściowe, może dostarczyć nieprawidłowy tekst JSON, który może zawierać niebezpieczny skrypt ... – jinglesthula
Jeśli łańcuch JSON pochodzi z serwera można spróbować techniki JSONP. JSON jest analizowany natywnie w przeglądarce (szybko) po załadowaniu i bez żadnej biblioteki.
np: jeśli odpowiedź jest {"name":"Peter"}
odpowiedź
JSONP będzie coś takiego: yourFunction({"name":"Peter"})
yourFunction
muszą być zdefiniowane globalnie funkcji na stronie, która będzie odbierać połączenia, jak:
function yourFunction(json){
//do something with the JSON
}
To nie jest biblioteka macierzysta w starszych przeglądarkach. Będziesz musiał wyraźnie uwzględnić [bibliotekę] (https://github.com/douglascrockford/JSON-js), aby je uwzględnić. – Spycho
Dzięki za wskazanie Spycho. –