Przekształcanie tekstu JSON na obiekty JavaScript - parse
Jak przekształcić tekst w formacie JSON na obiekty i wartości JavaScript?
(interpretuje: Internet Explorer 8, Firefox 3.5, Opera 10.50, Chrome)
JSON.parse(text) JSON.parse(text, reviver)
- Parametry:
String
text - tekst w formacie JSONFunction
reviver - funkcja przekształcająca wartości, przyjmująca argumenty:String
key - klucz danych albo pusty tekstObject|Array|String|Boolean|Number|Null
value - wartość danych
- Wartość:
Object
- obiektArray
- tablicaString
- tekstBoolean
- wartość logicznaNumber
- liczbaNull
- nic- Wyjątki:
SyntaxError
- text zawiera błąd składni formatu JSON
Przekształca tekst w formacie JSON (ang. JavaScript Object Notation) na wartości proste i obiekty obsługiwane przez JavaScript. JSON jest specjalnym formatem zapisu różnych danych o typach występujących w języku JavaScript, ale z dodatkowymi ograniczeniami. Polegają one m.in. na tym, że wszystkie wartości tekstowe - w tym klucze obiektów - muszą być ujęte w znaki cudzysłowu, a nie apostrofy. Dane muszą być zapisane wprost przy pomocy literałów, a nie z użyciem operatora new
oraz tworzone w całości za jednym razem bez używania zmiennych pomocniczych. Ponadto w formacie JSON można zapisać tylko następujące typy danych: Object
, Array
, String
, Boolean
, Number
, Null
.
Taki format zapisu danych stał się niezwykle przydatny w sytuacji, kiedy zachodzi potrzeba wymiany danych pomiędzy zdalnymi systemami, zaimplementowanymi w różnych językach. Ponieważ sposób zapisu JSON został określony standardem, w wielu językach programowania są dostępne gotowe biblioteki do jego obsługi. Dzięki temu możemy np. w skrypcie JavaScript odwołać się do aplikacji napisanej w PHP, która działa na serwerze, a następnie odczytać dane, które zostaną zwrócone z powrotem do naszego skryptu. Dzięki swojej prostocie, większej odporności na błędy oraz względnie niewielkim narzucie wydajnościowym i objętościowym, JSON w wielu miejscach wypiera XML jako uniweralny standard wymiany danych w heterogenicznym środowisku rozproszonym.
Funkcja reviver pozwala dodatkowo przekształcić dane wejściowe. Jest ona wywoływana po kolei dla wartości każdej właściwości danych wejściowych. Wartość this
w tej funkcji będzie stanowił obiekt, w którym jest zapisany podany klucz. Wartość zwrócona przez funkcję jest następnie umieszczana w danych wyjściowych.
W przypadku właściwości obiektów, gdy funkcja zwrotna reviver zwróci wartość undefined albo nie zwróci nic jawnie, podany klucz zostanie usunięty z danych wyjściowych. Nie dotyczy to elementów tablic.
Przykład JSON.parse
JSON.parse('{"a": 1}'); // {a: 1} var x = '{"a": 1, "b": 2, "c": 3}'; var f = function (key, value) { if (key == "") { return value; } if (value < 3) { return value * 2; } }; JSON.parse(x, f); // {a: 2, b: 4} JSON.parse("{"); // SyntaxError JSON.parse("{a: 1}"); // SyntaxError JSON.parse("{'a': 1}"); // SyntaxError