Neden json serileştirmesi, datetime nesneleri için çalışmaz? Json serileştirmesini anladığım kadarıyla, herhangi bir nesne için temel fikir, __str__
yerleşik işlevini çağırıp yanıt olarak aldığınız nesneyi klonlayabilir. Ama zaten mevcut nesneyi stringifying bir __str__
yani bir yolu varken datetime durumunda i aşağıdaki hatayıPython'da datetime nesnelerinin json serileştirmesi, datetime nesneleri için kutunun dışında çalışmaz
TypeError: datetime.datetime(2012, 5, 23, 18, 38, 23, 37566) is not JSON serializable
olsun, Ama bu durumda olacağını neden bunu bilinçli bir kararın gibi görünüyor ?
Json'un nasıl çalıştığını yanlış anlıyorsunuz. __str__ yöntemi ile ilgisi yoktur. JSON bir tarih-zaman türüne sahip değildir, bu nedenle JSON'ta bir tarih-zamanını, alıcı uçta bir çeşit özel mantık olmadan, kayıpsız bir şekilde kodlamak imkansızdır. Böylece kütüphane (mantıksal olarak), bir Unix zaman damgasına veya ISO tarih dizgisine veya bir şeye dönüştürerek bunu yapmanızı sağlar ve bu dönüşümün gerekli olduğunu açıkça belirtir. –
@TylerEaves Bu bir şey ama mantıklı. Bir dize veya int için bir datetime kodlamak ve birçok kez, dict'ten json'a, dedikten sonra python ekosisteminden asla vazgeçmeye gerek olmayan durumları kullanmak mümkündür, ancak json modülü, bu durumu bir özel olmadan ele alamaz datetime işleyici? Gerçekten mi?! Konuyla ilgili çok sayıda stackoverflow sorusuna bakarsak, şüphemde yalnız olmadığımı söyleyebilirim. –