JSON.stringify()

Zamienia wartość JavaScript, np. obiekt lub tablicę, na napis w formacie JSON.

Zwraca
Napis w formacie JSON (albo undefined, gdy przekażesz np. samą funkcję).
Zmienia oryginał
Nie
Na tej stronie

Przykład

#
JavaScript
const student = { name: 'Ania', level: 7, courses: ['HTML', 'CSS'], premium: false }

const json = JSON.stringify(student)
console.log(json)
console.log(typeof json)
Konsola
{"name":"Ania","level":7,"courses":["HTML","CSS"],"premium":false}
string

Definicja i zastosowanie

#

Metoda JSON.stringify() zamienia obiekt lub tablicę na tekst w formacie JSON. W tej postaci dane można wysłać do serwera przez fetch(), zapisać w localStorage albo w pliku. Operację odwrotną wykonuje JSON.parse().

Nie wszystko da się zapisać w JSON. Właściwości o wartości undefined, funkcje i symbole są pomijane (a w tablicach zamieniane na null), NaN i Infinity stają się null, a daty zamieniają się na napisy w formacie ISO. Map i Set dają pusty obiekt {}, a obiekt, który odwołuje się sam do siebie, powoduje błąd TypeError.

Drugi argument (replacer) pozwala wybrać lub przekształcić zapisywane pola: tablica nazw zostawia tylko te klucze, a funkcja może zmienić albo pominąć każdą wartość. Trzeci argument (space) dodaje wcięcia, dzięki czemu wynik jest czytelny dla człowieka.

Składnia

#
Składnia
JSON.stringify(value)
JSON.stringify(value, replacer)
JSON.stringify(value, replacer, space)

Parametry

#
  • value

    dowolna wartość

    Dane do zamiany na JSON, najczęściej obiekt lub tablica.
  • replacer

    opcjonalny, funkcja lub tablica

    Funkcja (key, value) przekształcająca wartości albo tablica nazw kluczy do zachowania. Podaj null, żeby go pominąć.
  • space

    opcjonalny, liczba lub napis

    Wcięcie dla czytelnego formatowania, np. 2 oznacza dwie spacje.

Więcej przykładów

#
Czytelne formatowanie
JavaScript
const settings = { theme: 'dark', sound: true }
console.log(JSON.stringify(settings, null, 2))
Konsola
{
"theme": "dark",
"sound": true
}
Co ginie przy zamianie na JSON
JavaScript
const quiz = {
  title: 'Quiz z pętli',
  deadline: new Date(Date.UTC(2026, 8, 28)),
  onFinish() {},
  bonus: undefined,
  score: NaN,
  tags: new Set(['js'])
}

console.log(JSON.stringify(quiz))
Konsola
{"title":"Quiz z pętli","deadline":"2026-09-28T00:00:00.000Z","score":null,"tags":{}}
Wybór pól przez replacer
JavaScript
const user = { id: 7, name: 'Ola', password: 'tajne123', email: 'ola@example.com' }

console.log(JSON.stringify(user, ['id', 'name']))
console.log(JSON.stringify(user, (key, value) => (key === 'password' ? undefined : value)))
Konsola
{"id":7,"name":"Ola"}
{"id":7,"name":"Ola","email":"ola@example.com"}

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

#
  • Przed zapisem Map lub Set zamień je na zwykłe struktury: Object.fromEntries(map) albo [...set].
  • Do podglądu dużych obiektów użyj JSON.stringify(obj, null, 2). Zobaczysz całą strukturę z wcięciami.
  • JSON.parse(JSON.stringify(obj)) to stary sposób na głęboką kopię, który gubi daty, undefined i funkcje. Lepiej użyj structuredClone().

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.