JSON. parse()
Zamienia napis w formacie JSON na wartość JavaScript, np. obiekt lub tablicę.
- Zwraca
- Wartość JavaScript odpowiadającą tekstowi JSON.
Przykład
#const json = '{"name":"Kuba","level":3,"skills":["HTML","CSS"],"premium":true}'
const user = JSON.parse(json)
console.log(user.name)
console.log(user.skills[1])
console.log(user)Definicja i zastosowanie
#Metoda JSON.parse() odczytuje tekst w formacie JSON i tworzy z niego odpowiadającą mu wartość: obiekt, tablicę, napis, liczbę, true, false lub null. Używa się jej do danych z serwera, z localStorage czy z plików konfiguracyjnych.
Format JSON jest bardziej rygorystyczny niż zapis obiektów w JavaScripcie. Klucze i napisy muszą być w podwójnych cudzysłowach, po ostatnim elemencie nie może stać przecinek, a komentarze są zabronione. Niepoprawny tekst powoduje błąd SyntaxError, dlatego dane z niepewnego źródła parsuj w bloku try...catch.
Opcjonalny drugi argument (reviver) to funkcja wywoływana dla każdej pary klucz i wartość. Pozwala przekształcić wynik w trakcie odczytu, na przykład zamienić napisy z datami z powrotem na obiekty Date.
Składnia
#JSON.parse(text)
JSON.parse(text, reviver)Parametry
#text
napis
Tekst w formacie JSON.reviver
opcjonalna function (key, value)
Funkcja przekształcająca każdą odczytaną wartość. To, co zwróci, trafi do wyniku.
Więcej przykładów
#function safeParse(text, fallback) {
try {
return JSON.parse(text)
} catch {
return fallback
}
}
console.log(safeParse('{"theme":"dark"}', {}))
console.log(safeParse("{theme: 'dark'}", {}))const json = '{"title":"Egzamin","date":"2026-09-28T10:30:00.000Z"}'
const exam = JSON.parse(json, (key, value) => (key === 'date' ? new Date(value) : value))
console.log(exam.date instanceof Date)
console.log(exam.date.getUTCHours())const attempts = ["{'level': 1}", '{"level": 1,}', '{"level": 1}']
for (const text of attempts) {
try {
console.log(JSON.parse(text))
} catch (error) {
console.log(error.name)
}
}Pierwszy napis używa pojedynczych cudzysłowów, a drugi ma przecinek po ostatnim elemencie. Oba zapisy są poprawne w JavaScripcie, ale nie w JSON.
Obsługa przeglądarek
#Szeroko dostępne
Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#- Dane z sieci, od użytkownika i z
localStoragezawsze parsuj wtry...catch. Jeden zły znak rzuciSyntaxError. JSON.parse()nie odtworzy dat,Mapani instancji klas. Daty przywrócisz funkcjąreviver.- Przy
fetch()zamiastJSON.parse(await response.text())użyj po prostuawait response.json().
Powiązane hasła
#- JSON.stringify()Zamienia wartość JavaScript, np. obiekt lub tablicę, na napis w formacie JSON.
- try...catchPrzechwytuje błędy rzucone w bloku try i obsługuje je w catch. Opcjonalny finally wykona się zawsze.
- fetch()Wysyła zapytanie HTTP i zwraca obietnicę z odpowiedzią serwera (obiektem Response).
- localStoragePamięć przeglądarki na pary klucz i wartość, która przetrwa odświeżenie strony i ponowne uruchomienie przeglądarki.
- structuredClone()Tworzy głęboką kopię wartości, łącznie z zagnieżdżonymi obiektami, datami, Map i Set.
Widzisz błąd albo brakuje przykładu? Napisz do nas.