Przejdź do treści

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 JSON
Function reviver - funkcja przekształcająca wartości, przyjmująca argumenty:
  • String key - klucz danych albo pusty tekst
  • Object|Array|String|Boolean|Number|Null value - wartość danych
Wartość:
Object - obiekt
Array - tablica
String - tekst
Boolean - wartość logiczna
Number - liczba
Null - 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

Komentarze

Zobacz więcej komentarzy

Facebook