Skip to content

JSON.stringify()

JSON-ning keng tarqalgan qo'llanilishi veb-server bilan ma'lumot almashishdir.

Veb-serverga ma'lumot yuborilayotganda, ma'lumot har doim matn (string) ko'rinishida bo'lishi kerak. Har qanday JavaScript ma'lumot turini JSON.stringify() yordamida matnga aylantirishingiz mumkin.


JavaScript obyektini matnga aylantirish (Stringify)

Tasavvur qiling, bizda JavaScript-da quyidagi obyekt bor:

js
const obj = { name: 'John', age: 30, city: 'New York' }

Uni matnga aylantirish uchun JSON.stringify() funksiyasidan foydalaning:

js
const myJSON = JSON.stringify(obj)

Natija

Natijada JSON notasiga mos keladigan matn (string) hosil bo'ladi.

myJSON endi matn hisoblanadi va serverga yuborishga tayyor:

js
const obj = { name: 'John', age: 30, city: 'New York' }
const myJSON = JSON.stringify(obj)

JavaScript massivini matnga aylantirish

JavaScript massivlarini ham matnga aylantirish mumkin:

js
const arr = ['John', 'Peter', 'Sally', 'Jane']
const myJSON = JSON.stringify(arr)

Ma'lumotlarni saqlash

Ma'lumotlarni saqlashda u ma'lum bir formatda bo'lishi kerak va matn har doim ruxsat etilgan formatlardan biridir. JSON JavaScript obyektlarini matn sifatida saqlash imkonini beradi.

Misol: Ma'lumotlarni local storage-da saqlash

js
// Saqlash:
const myObj = { name: 'John', age: 31, city: 'New York' }
const myJSON = JSON.stringify(myObj)
localStorage.setItem('testJSON', myJSON)

// Qabul qilish:
let text = localStorage.getItem('testJSON')
let obj = JSON.parse(text)
document.getElementById('demo').innerHTML = obj.name

Barcha ma'lumot turlari

JSON.stringify() nafaqat obyektlar va massivlarni, balki har qanday JavaScript qiymatini matnga aylantira oladi.

Raqamni aylantirish:

js
const num = 123e-5
const myJSON = JSON.stringify(num)

Mantiqiy qiymatni aylantirish:

js
let bool = true
const myJSON = JSON.stringify(bool)

Sanani (Date) aylantirish

JSON-da Date obyektlariga ruxsat berilmagan. JSON.stringify() funksiyasi har qanday Date obyektini matnga aylantirib beradi.

js
const obj = { name: 'John', today: new Date(), city: 'New York' }
const myJSON = JSON.stringify(obj)

Qabul qiluvchi tomonda bu matnni yana Date obyektiga aylantirib olishingiz mumkin.


Funksiyani aylantirish

JSON-da funksiyalarga obyekt qiymati sifatida ruxsat berilmagan. JSON.stringify() funksiyasi JavaScript obyektidan har qanday funksiyani (ham kalitni, ham qiymatni) o'chirib tashlaydi:

js
const obj = {
  name: 'John',
  age: function () {
    return 30
  },
  city: 'New York'
}
const myJSON = JSON.stringify(obj)
// Natija: {"name":"John","city":"New York"}

Agar funksiyalarni JSON.stringify() dan oldin matnga aylantirib olsangiz, ular saqlab qolinadi:

js
const obj = {
  name: 'John',
  age: function () {
    return 30
  },
  city: 'New York'
}
obj.age = obj.age.toString()
const myJSON = JSON.stringify(obj)

Diqqat!

Agar siz JSON orqali funksiyalarni yuborsangiz, funksiyalar o'z blokini (scope) yo'qotadi va qabul qiluvchi ularni qayta funksiyaga aylantirish uchun eval() dan foydalanishi kerak bo'ladi.