📂 Dosya & JSON

Dosya & JSON: JSON, bir Python programı ile bir Java programının ortak konuştuğu nötr bir dil gibi — ikisi de kendi "ana dilini" (dict, HashMap) bırakıp ortak bir formata geçer.

JSON, bir Python programı ile bir Java programının ortak konuştuğu nötr bir dil gibi — ikisi de kendi "ana dilini" (dict, HashMap) bırakıp ortak bir formata geçer. Ama burada gerçek bir tuzak var: '{"retries": "3", "timeout": 30}' JSON'ını okuduğunda, "retries" tırnak İÇİNDE yazıldığı için Python'a STRING olarak gelir, "timeout" tırnaksız olduğu için sayı olarak gelir — ikisi de aynı satırda, farklı davranır. config["retries"] * config["timeout"] yazarsan, Python hata FIRLATMAZ ama "3" * 30 işlemini "333333..." (30 kez tekrarlanan string) yapar — matematik hiç gerçekleşmez! json.dump() ile yazarken de aynı dikkat gerekir: bir dosyayı "with open(...) as f:" ile açıp kapatmak, dosyanın YARIM yazılmış halde kalmasını engeller. Peki JSON madem "ortak dil", neden hâlâ tip sürprizleriyle uğraşıyoruz — format standart değil mi? Format standart, ama JSON'ın tip kümesi bilerek FAKİRDİR: string, number, boolean, null, array, object. Tarih tipi yoktur, ondalık hassasiyet garantisi yoktur, tam sayı ile ondalık ayrımı yoktur. Yani JSON'a yazdığın her zengin tip, karşı tarafta yeniden yorumlanmak zorundadır — Java'da Jackson ile bir POJO'ya map ederken LocalDate için ayrı bir formatter yazmanın sebebi tam olarak budur. Python'da ise dict esnek olduğu için bu dönüşüm ATLANIR ve hata çalışma zamanına ertelenir. QA açısından kural: API response'undan gelen bir değeri assert etmeden önce tipini de doğrula — assert config["retries"] == 3 ile assert config["retries"] == "3" arasındaki fark, gerçek bir contract bug'ı ile geçen bir test arasındaki farktır.

Java'da Jackson veya Gson kütüphanesi kullanılır. Python'da standart kütüphane 'json' modülü yeterli — import etmek yeterli. json.dumps() Python'u JSON string'e, json.loads() JSON string'i Python'a çevirir.

Micro Lab: Python kod yazma

TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.

Python'da dict'i JSON string'e dönüştüren fonksiyon hangisidir?

json.dumps() (dump string) Python nesnesini JSON string'e çevirir. json.loads() (load string) tersini yapar. JavaScript'teki JSON.stringify() ve JSON.parse() gibi.

Bir JSON string'ini Python sözlüğüne (dict) dönüştüren fonksiyon hangisidir?

json.loads() (load string) bir JSON verisini Python nesnesine dönüştürür. json.dump() veya json.dumps() ise tersi yönde, Python nesnesini JSON verisine dönüştürür.

json.dumps() Bir Python Dict'i Nasıl Metne Çevirir?

test_result bir Python dict'idir…

test_result bir Python dict'idir — bellekte YAŞAYAN, henüz bir DOSYAYA veya AĞA gönderilmeye HAZIR olmayan canlı bir VERİ yapısıdır.

json.dumps(test_result) çağrıldığında…

json.dumps(test_result) çağrıldığında (dumps = 'dump STRING'), Python bu dict'i GEZER ve her anahtar/değeri JSON SÖZDİZİMİNE uygun bir METİN string'ine ÇEVİRİR.

İç İçe bir liste (tags: [...]) …