Skip to content

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:

json
"{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"

Matnni JavaScript obyektiga aylantirish uchun JSON.parse() funksiyasidan foydalaning:

js
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:

html
<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.

js
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:

js
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.birth

Yoki siz JSON.parse() funksiyasining ikkinchi parametri — reviver (qayta tiklovchi) funksiyasidan foydalanishingiz mumkin. Reviver parametri qiymatni qaytarishdan oldin har bir xususiyatni tekshiradigan funksiyadir.

js
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.birth

Funksiyalarni tahlil qilish

JSON-da funksiyalarga ruxsat berilmagan. Agar sizga funksiya kerak bo'lsa, uni matn sifatida yozing va keyinchalik uni funksiyaga aylantiring:

js
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.