JSON.parse()
JSON-ning keng tarqalgan qo'llanilishi veb-server bilan ma'lumot almashishdir.
Veb-serverdan ma'lumot qabul qilinganda, ma'lumot har doim matn (string) ko'rinishida bo'ladi. Ma'lumotni JSON.parse() yordamida tahlil qiling va u JavaScript obyektiga aylanadi.
Misol - JSON-ni tahlil qilish
Tasavvur qiling, biz veb-serverdan quyidagi matnni qabul qildik:
"{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"Matnni JavaScript obyektiga aylantirish uchun JSON.parse() funksiyasidan foydalaning:
const obj = JSON.parse('{"name":"John", "age":30, "city":"New York"}')Diqqat!
Matn JSON formatida ekanligiga ishonch hosil qiling, aks holda sintaksis xatosi (SyntaxError) yuzaga keladi.
Obyektni sahifangizda ishlating:
<p id="demo"></p>
<script>
document.getElementById('demo').innerHTML = obj.name
</script>JSON-dagi massiv (Array)
Agar JSON.parse() massivdan hosil qilingan JSON matnida ishlatilsa, metod JavaScript obyekti o'rniga JavaScript massivini qaytaradi.
const text = '["Ford", "BMW", "Audi", "Fiat"]'
const myArr = JSON.parse(text)Istisnolar (Exceptions)
Sanalarni (Dates) tahlil qilish
JSON-da Date obyektlariga ruxsat berilmagan. Agar sizga sana kerak bo'lsa, uni matn sifatida yozing. Keyinchalik uni Date obyektiga qayta aylantirishingiz mumkin:
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.birthYoki siz JSON.parse() funksiyasining ikkinchi parametri — reviver (qayta tiklovchi) funksiyasidan foydalanishingiz mumkin. Reviver parametri qiymatni qaytarishdan oldin har bir xususiyatni tekshiradigan funksiyadir.
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.birthFunksiyalarni tahlil qilish
JSON-da funksiyalarga ruxsat berilmagan. Agar sizga funksiya kerak bo'lsa, uni matn sifatida yozing va keyinchalik uni funksiyaga aylantiring:
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()Tavsiya
JSON-da funksiyalardan foydalanishdan qochishingiz kerak. Funksiyalar o'zining ko'rinish sohasini (scope) yo'qotadi va ularni qayta tiklash uchun eval() dan foydalanishga to'g'ri keladi.
