2008-11-03 13 views
8

W GWT, jaki jest najlepszy sposób przekonwertowania typu nakładki JavaScriptObject na ciąg JSON?Typy nakładek GWT, konwersja do JSON

Obecnie mam

public final String toJSON() {  
    return new JSONObject(this).toString(); 
} 

co wydaje się działać prawidłowo. Chciałbym wiedzieć, czy istnieją lepsze podejścia.

+0

Oprócz korzystania z innej biblioteki, aby to zrobić, jest to najlepszy sposób. To wymaga, abyś dodał do swojego modułu GWT –

Odpowiedz

4

Nigdy tak naprawdę nie próbowałem tego (tylko zużyłem JSON do tej pory, nigdy nie potrzebowałem go wyprodukować). Wygląda na to, że jest to natywna przeglądarka/javascript.

Ty mógłby napisać go jako:

public native String toJSON() /*-{ 
    return this.toString(); 
}-*/; 

one zasadniczo tylko zrobić dokładnie to samo i prawdopodobny rezultat w identycznej wydajności JavaScript. Kompilator optymalizujący jest naprawdę niesamowity.

+3

Czy to działa? Zaimplementowałem to dokładnie w typie nakładki i zwraca [obiekt Object]. Jakakolwiek pomoc się przyda, dzięki. – Eugen

+0

@Eugen - patrz komentarz Nicka. Jak wspomina, większość nowoczesnych przeglądarek obsługuje 'JSON.stringify()'. Jeśli potrzebujesz obsługiwać przeglądarkę, która nie działa, użyj polyfill takiego jak [JSON 3] (http://bestiejs.github.io/json3/). – Barrie

2

mamy metodę JSNI takiego, ale korzystać z biblioteki Douglas Crockfords JSON (w przypadku gdy przeglądarka nie dostarcza jedną natywnie):

https://github.com/douglascrockford/JSON-js

public native String stringify() /*-{ 
    return JSON.stringify(); 
}-*/; 

co jest miłe jest to, że może zająć stringify Parametry pozwalające na wydrukowanie wydruku z określonym wcięciem ... między innymi