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:
const obj = { name: 'John', age: 30, city: 'New York' }Uni matnga aylantirish uchun JSON.stringify() funksiyasidan foydalaning:
const myJSON = JSON.stringify(obj)Natija
Natijada JSON notasiga mos keladigan matn (string) hosil bo'ladi.
myJSON endi matn hisoblanadi va serverga yuborishga tayyor:
const obj = { name: 'John', age: 30, city: 'New York' }
const myJSON = JSON.stringify(obj)JavaScript massivini matnga aylantirish
JavaScript massivlarini ham matnga aylantirish mumkin:
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
// 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.nameBarcha ma'lumot turlari
JSON.stringify() nafaqat obyektlar va massivlarni, balki har qanday JavaScript qiymatini matnga aylantira oladi.
Raqamni aylantirish:
const num = 123e-5
const myJSON = JSON.stringify(num)Mantiqiy qiymatni aylantirish:
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.
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:
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:
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.
