JSON .parse()
Powszechnym zastosowaniem JSON jest wymiana danych do/z serwera WWW.
Podczas odbierania danych z serwera WWW dane są zawsze ciągiem.
Przeanalizuj dane za pomocą JSON.parse()
, a dane staną się obiektem JavaScript.
Przykład — parsowanie JSON
Wyobraź sobie, że otrzymaliśmy ten tekst z serwera WWW:
'{"name":"John", "age":30, "city":"New York"}'
Użyj funkcji JavaScript, JSON.parse()
aby przekonwertować tekst na obiekt JavaScript:
const obj = JSON.parse('{"name":"John", "age":30, "city":"New
York"}');
Upewnij się, że tekst jest w formacie JSON, w przeciwnym razie otrzymasz błąd składni.
Użyj obiektu JavaScript na swojej stronie:
Przykład
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = obj.name;
</script>
Tablica jako JSON
W przypadku korzystania z JSON.parse()
on JSON pochodzącego z tablicy, metoda zwróci tablicę JavaScript zamiast obiektu JavaScript.
Przykład
const text = '["Ford", "BMW", "Audi", "Fiat"]';
const myArr = JSON.parse(text);
Wyjątki
Parsowanie dat
Obiekty daty nie są dozwolone w JSON.
Jeśli chcesz dołączyć datę, napisz ją jako ciąg.
Możesz go później przekonwertować z powrotem na obiekt daty:
Przykład
Przekształć ciąg w datę:
const text =
'{"name":"John", "birth":"1986-12-14", "city":"New York"}';
const obj = JSON.parse(text);
obj.birth = new Date(obj.birth);
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
Możesz też użyć drugiego parametru JSON.parse()
funkcji, zwanego reviver .
Parametr reviver to funkcja, która sprawdza każdą właściwość przed zwróceniem wartości.
Przykład
Przekształć ciąg w datę, używając funkcji reviver :
const text =
'{"name":"John", "birth":"1986-12-14", "city":"New York"}';
const obj = JSON.parse(text, function (key, value) {
if
(key == "birth") {
return new
Date(value);
} else {
return value;
}
});
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
Funkcje analizowania
Funkcje nie są dozwolone w JSON.
Jeśli potrzebujesz dołączyć funkcję, napisz ją jako ciąg.
Możesz go później przekonwertować z powrotem na funkcję:
Przykład
Przekształć ciąg w funkcję:
const text =
'{"name":"John", "age":"function () {return
30;}", "city":"New York"}';
const obj = JSON.parse(text);
obj.age = eval("(" + obj.age + ")");
document.getElementById("demo").innerHTML = obj.name + ", " +
obj.age();
Powinieneś unikać używania funkcji w JSON, funkcje stracą swój zakres i będziesz musiał użyć eval()
ich do przekonwertowania ich z powrotem na funkcje.