You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1.8 KiB

JSON Uyumlu Encoder

Bazı durumlarda, bir veri tipini (örneğin bir Pydantic model) JSON ile uyumlu bir şeye (örneğin dict, list vb.) dönüştürmeniz gerekebilir.

Örneğin, bunu bir veritabanında saklamanız gerekiyorsa.

Bunun için FastAPI, jsonable_encoder() fonksiyonunu sağlar.

jsonable_encoder Kullanımı

Yalnızca JSON ile uyumlu veri kabul eden bir veritabanınız olduğunu düşünelim: fake_db.

Örneğin bu veritabanı, JSON ile uyumlu olmadıkları için datetime objelerini kabul etmez.

Dolayısıyla bir datetime objesinin, ISO formatında veriyi içeren bir str'e dönüştürülmesi gerekir.

Aynı şekilde bu veritabanı bir Pydantic model'i (attribute'lara sahip bir obje) de kabul etmez; yalnızca bir dict kabul eder.

Bunun için jsonable_encoder kullanabilirsiniz.

Bir Pydantic model gibi bir obje alır ve JSON ile uyumlu bir versiyonunu döndürür:

{* ../../docs_src/encoder/tutorial001_py310.py hl[4,21] *}

Bu örnekte, Pydantic model'i bir dict'e, datetime'ı da bir str'e dönüştürür.

Bu fonksiyonun çağrılmasıyla elde edilen sonuç, Python standardındaki json.dumps() ile encode edilebilecek bir şeydir.

JSON formatında (string olarak) veriyi içeren büyük bir str döndürmez. Bunun yerine, tüm değerleri ve alt değerleri JSON ile uyumlu olacak şekilde, Python’un standart bir veri yapısını (örneğin bir dict) döndürür.

/// note | Not

jsonable_encoder, aslında FastAPI tarafından veriyi dönüştürmek için internal olarak kullanılır. Ancak birçok farklı senaryoda da oldukça faydalıdır.

///