2009-05-07 27 views

Odpowiedz

2

rzekła Crockforda (http://www.json.org/js.html):

Aby przekonwertować tekst do obiektu JSON, można użyć funkcji eval(). eval() wywołuje kompilator JavaScript . Ponieważ JSON jest prawidłowym podzbiorem JavaScript, kompilator poprawnie analizuje tekst, a tworzy strukturę obiektu. Tekst musi być zawijany w parenach, aby uniknąć zadziałania w niejednoznaczności w składni JavaScript w postaci .

var myObject = eval ("(" + myJSONtext + ")");

Funkcja eval jest bardzo szybka. Jednak może skompilować i wykonać dowolny program JavaScript, więc nie może być problemów bezpieczeństwa. Wykorzystanie eval to wskazana, gdy źródło jest zaufane i właściwe. O wiele bezpieczniej jest używać parsera JSON. ...

Aby się przed tym obronić, należy użyć parsera JSON . Parser JSON będzie rozpoznawać tylko tekst JSON, odrzucając wszystkie skrypty odrzucając . W przeglądarkach obsługujących macierzystą obsługę JSON , parsery JSON są również znacznie szybsze niż eval. Oczekuje się, że natywna obsługa JSON będzie włączona do następnego standardu ECMAScript .

var myObject = JSON.parse (myJSONtext, reviver);

Następnie opracowuje prototyp JSON w dalszej części artykułu.

Wersje Gecko używane w Firefoksie 3 i 3.5 obsługują JSON natywnie (https://developer.mozilla.org/En/JSON), co może być przydatne, jeśli projekt jest ograniczony do ostatniej aplikacji opartej na Gecko.


Jak wskazano poniżej, interesujący część o generatora tekstu (nie parser) jest https://github.com/douglascrockford/JSON-js/blob/master/json2.js i wprowadzono

JSON stringifier jedzie w przeciwnym kierunku, przekształcenie struktury danych JavaScript w JSON tekst. JSON nie obsługuje cyklicznych struktur danych, dlatego należy uważać, aby nie podawać cyklicznych struktur dla łańcucha JSON.

var myJSONText = JSON.stringify (myObject, replacer);

Cykliczne struktury danych i obiekty, które nie są użytecznie serializowane są oczywiście jedynymi poważnymi zastrzeżeniami.

0

Warto wspomnieć, że połączenie anonymous (http://www.json.org/js.html) skieruje Cię w dobrym kierunku, ponieważ strona również zawiera informacje o tym, jak stringify strukturę danych JavaScript do JSON tekście:

JSON stringifier idzie w przeciwnym kierunku, konwertując struktury danych JavaScript na tekst JSON.

W szczególności poszukaj łącza u dołu strony, które wskazuje na parser JSON z otwartym kodem źródłowym i stringer JSON.

12

Są dwie metody, próbki z biblioteki Crockforda (jak podniesiona przez @Anonymous)

JSON łańcuch obiektu:

var obj = JSON.parse('{ "property":"value" }'); 
alert (obj.property); 

// value 

Przedmiot JSON wyrażenie:

var str = JSON.stringify({ "property":"value" }) 
alert (str); 

//{ "property":"value" } 

Istnieje również wbudowane w to metody w większości głównych frameworków.

+0

Biblioteka na http://www.json.org/json.js – Keith

+2

@Jason T Featheringham Waow 'Mr.Json' był obecny tutaj sam edytując pytanie :) –