CodeBlanks Logo Icon CodeBlanks

JSON yanıtı

await resp.json() ile JSON yanıtı öğrenirsin.

Yapısal veri yanıtı

Bir HTTP yanıtı genellikle yapısal veri biçiminde gelir. Yanıt gövdesini önce await resp.text() ile dize olarak alır, sonra json.loads ile sözlüğe çevirirsin.

import json

text = await resp.text()
data = json.loads(text)
print(data["ad"])

Bu iki adımlı yaklaşım, hem gövdeyi denetlemeye olanak verir hem de yapısal veriyi güvenli biçimde ayrıştırır. Yapısal veri modülü standart kütüphanededir.

await resp.text

await resp.text() yanıt gövdesini bir dize olarak döndürür. Bu, yapısal veriyi ayrıştırmadan önce ham gövdeyi görmek istediğinde yararlıdır.

async with session.get(url) as resp:
    text = await resp.text()
    print(text)  # ham gövde

Büyük gövdelerede await resp.read() bayt olarak okur; daha sonra .decode() ile dizeye çevirirsin. İki yöntem de gövdeyi yalnızca bir kez okur.

Uygulama Yanıttan yapısal veri oku

import asyncio, import aiohttp ve import json ile başla. async def main() içinde async with aiohttp.ClientSession() as session: aç. async with session.get("https://example.com") as resp: ile GET isteği yap. text = await resp.text() ile gövdeyi al. data = json.loads(text) ile sözlüğe çevir. print(data["ad"]) ile adı yazdır. asyncio.run(main()) ekle.

Başlangıç kodu

main.py
# asyncio, aiohttp ve yapısal veri modülünü içe aktar
# async with ile bir oturum aç
# oturum üzerinde get ile bir istek yap
# await ile gövdeyi dize olarak al
# yapısal veri modülünün loads fonksiyonu ile sözlüğe çevir ve adı yazdır
# asyncio.run ile main'i çalıştır

Örnek çözüm

main.py
import asyncio
import aiohttp
import json

class _S:
    async def __aenter__(self): return self
    async def __aexit__(self, *a): return False
    def get(self, url): return self
    async def text(self): return '{"ad": "Ayşe"}'

aiohttp.ClientSession = _S

async def main():
    async with aiohttp.ClientSession() as session:
        async with session.get('https://example.com') as resp:
            text = await resp.text()
            data = json.loads(text)
            print(data['ad'])

asyncio.run(main())

Beklenen çıktı

Ayşe

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 json.loads çağrısını tamamla

Soru
import json

text = '{"ad": "Ayşe"}'
data = json.____(text)
Cevap
import json

text = '{"ad": "Ayşe"}'
data = json.loads(text)

Açıklama: json.loads(dize) bir dizeyi sözlüğe çevirir.

2 Yapısal veriyi dizeden sözlüğe çeviren fonksiyon hangisi?

  • json.dump
  • json.load
  • json.dumps
  • json.loads Doğru cevap

Açıklama: json.loads(dize) bir dizeyi sözlüğe çevirir.

3 yapısal veri kavramlarını eşleştir

Kavram Anlamı
await resp.text Gövdeyi dize verir
json.loads Dizeyi sözlüğe çevirir
import json Modülü içe aktarır
data['ad'] Sözlükten değer alır

İleri seviye bölümündeki tüm dersler