Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

JSON'da Gelen Veri Tipi Değişince Çıldırdım: Bazen Int, Bazen String!

✖ Kapat
Duyuru
✖ Kapat
Duyuru

devnix

Üye
Katılım
14 Mart 2026
Mesajlar
51
🤯 "Bu Ne Şimdi?" Anı

Kafayı yiyecektim dostlar. Şu anlamsız `TypeError: can only concatenate str (not "int") to str` hatasını alıp duruyordum. Meğerse sorun, dışarıdan bağlandığımız bir REST API'sinden gelen JSON yanıtındaymış. "id" alanı bazen `123` (integer) bazen de `"123"` (string) olarak geliyormuş. Kim, neden böyle bir şey yapar? İşte o an:

Python:
user_id = data["id"] + "_kullanici"  # data["id"] bazen 123, bazen "123"

🔍 Debug Macerası ve Çözüm Arayışı

Önce kendi kodumu suçladım, saatlerce baktım. Sonra Postman ile API'yi test edip raw çıktıyı görünce olan oldu. Aynı endpoint, farklı sunucular için farklı tip döndürüyordu. StackOverflow'da bile böyle saçma bir senaryoya tam uyan bir çözüm bulamadım.

İlk aklıma gelen, her yerde `str()` ile sarmalamaktı. Ama bu hem çirkin hem de performans açısından içime sinmedi. Daha temiz ve Pythonic bir yol aradım.

💡 Uyguladığım Pratik Çözüm

Sonunda, veriyi işlemeden hemen önce, şüpheli alanı standart bir tipe çeviren küçük bir "normalize" fonksiyonu yazdım. İşte o kod:

Python:
def normalize_field(value, target_type=str):
    """Gelen değeri, belirtilen hedef tipe çevirmeye çalışır."""
    try:
        return target_type(value)
    except (ValueError, TypeError):
        return value  # Çevrilemezse olduğu gibi döndür, başka bir mantık kurulabilir.

# Kullanımı
safe_id = str(normalize_field(data.get("id"), str))
process_user(safe_id + "_kullanici")

Bu sayede, alan artık ne gelirse gelsin (int, string, hatta `None`), benim için hep güvenli bir string'e dönüşüyor. İşin özü, dış dünyaya (external API'lara) asla güvenmemek gerekiyormuş.

Siz de böyle tutarsız API'lerle uğraşmak zorunda kaldınız mı? `int`/`string` karmaşası dışında hangi garip tip sorunlarıyla karşılaştınız? Belki daha şık bir yönteminiz vardır, paylaşın!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri