Python JSON bilan tanishish
JSON (JavaScript Object Notation) — tuzilgan ma'lumotlarni ifodalash uchun ishlatiladigan mashhur ma'lumot formati. Server va veb-ilova orasida JSON formatida ma'lumot uzatish va qabul qilish keng tarqalgan.
Pythonda, JSON satr sifatida mavjud. Masalan:
p = '{"name": "Bob", "languages": ["Python", "Java"]}'
JSON obyektini faylda saqlash ham keng tarqalgan.
JSON (satr yoki JSON obyektini o'z ichiga olgan fayl) bilan ishlash uchun, siz Pythonning json modulidan foydalanishingiz mumkin. Undan foydalanishdan oldin modulni import qilishingiz kerak.
import json
json moduli JSON satrlarini va JSON obyektini o'z ichiga olgan fayllarni tahlil qilishni osonlashtiradi.
1-misol: Python JSON'dan dict'ga
JSON satrini json.loads() metodi yordamida tahlil qilishingiz mumkin. Metod lug'atni qaytaradi.
import json
person = '{"name": "Bob", "languages": ["English", "French"]}'
person_dict = json.loads(person)
# Natija: {'name': 'Bob', 'languages': ['English', 'French']}
print( person_dict)
# Natija: ['English', 'French']
print(person_dict['languages'])
Bu yerda, person — JSON satri, person_dict esa — lug'at.
2-misol: Python JSON faylini o'qish
JSON obyektini o'z ichiga olgan faylni o'qish uchun json.load() metodidan foydalanishingiz mumkin.
Aytaylik, sizda JSON obyektini o'z ichiga olgan person.json nomli faylingiz bor.
{"name": "Bob",
"languages": ["English", "French"]
}
Mana bu faylni qanday tahlil qilish mumkin:
import json
with open('path_to_file/person.json', 'r') as f:
data = json.load(f)
# Natija: {'name': 'Bob', 'languages': ['English', 'French']}
print(data)
Bu yerda, biz json faylini o'qish uchun open() funksiyasidan foydalandik. Keyin, fayl json.load() metodi yordamida tahlil qilinadi, bu esa bizga data nomli lug'atni beradi.
Agar Pythonda fayllarni qanday o'qish va yozishni bilmasangiz, Python File I/O sahifasini ko'rib chiqishni tavsiya qilamiz.
Lug'atni json.dumps() metodi yordamida JSON satriga aylantirishingiz mumkin.
3-misol: dict'ni JSON'ga aylantirish
import json
person_dict = {'name': 'Bob',
'age': 12,
'children': None
}
person_json = json.dumps(person_dict)
# Natija: {"name": "Bob", "age": 12, "children": null}
print(person_json)
Mana Python obyektlari va ularning JSON'ga mos konvertatsiyasini ko'rsatuvchi jadval.
| Python | JSON'ga muvofiq |
|---|---|
dict | object |
list, tuple | array |
str | string |
int, float, int | number |
True | true |
False | false |
None | null |
Pythonda JSON'ni faylga yozish uchun, biz json.dump() metodidan foydalanishimiz mumkin.
4-misol: JSON'ni faylga yozish
import json
person_dict = {"name": "Bob",
"languages": ["English", "French"],
"married": True,
"age": 32
}
with open('person.txt', 'w') as json_file:
json.dump(person_dict, json_file)
Yuqoridagi dasturda, biz 'w' yordamida person.txt nomli faylni yozish rejimida ochdik. Agar fayl hali mavjud bo'lmasa, u yaratiladi. Keyin, json.dump() person_dictni person.txt faylida saqlanadigan JSON satriga aylantiradi.
Dasturni ishga tushirganingizda, person.txt fayli yaratiladi. Fayl ichida quyidagi matn bo'ladi.
{"name": "Bob", "languages": ["English", "French"], "married": true, "age": 32}
JSON ma'lumotlarini tahlil qilish va sozlash (debug) uchun, biz uni o'qilishi osonroq formatda chop etishimiz kerak bo'lishi mumkin. Buni json.dumps() va json.dump() metodlariga qo'shimcha indent va sort_keys parametrlarini uzatish orqali qilish mumkin.
5-misol: Python JSON'ni chiroyli chop etish
import json
person_string = '{"name": "Bob", "languages": "English", "numbers": [2, 1.6, null]}'
# Lug'atni olish
person_dict = json.loads(person_string)
# JSON satrini chiroyli chop etish
print(json.dumps(person_dict, indent = 4, sort_keys=True))
Dasturni ishga tushirganingizda, natija bunday bo'ladi:
{
"languages": "English",
"name": "Bob",
"numbers": [
2,
1.6,
null
]
}
Yuqoridagi dasturda, biz chekinish uchun 4 ta bo'sh joydan foydalandik. Va, kalitlar o'sish tartibida saralangan.
Aytgancha, indentning standart qiymati None. Va, sort_keysning standart qiymati False.
Tavsiya etilgan o'qishlar: Python JSON to CSV and vice-versa, Python XML to JSON and vice-versa, Python simplejson