Bu, sizi ısırabilecek çeşitli harita koleksiyonları arasındaki ince farklılıklardan biridir. JSON, anahtarları dizeler olarak ele alır; Python, yalnızca tür olarak farklı olan farklı anahtarları destekler.
Python'da (ve görünüşe göre Lua'da) bir eşlemenin anahtarları (sırasıyla sözlük veya tablo) nesne referanslarıdır. Python'da değişmez türler olmalı veya bir __hash__
yöntemi uygulayan nesneler olmalıdır . (Lua belgeleri, nesnenin kimliğini, değişebilir nesneler için bile otomatik olarak bir karma / anahtar olarak kullandığını ve eşdeğer dizelerin aynı nesnelerle eşleşmesini sağlamak için dizge interning'e dayandığını önerir).
Perl, Javascript, awk ve diğer birçok dilde, özetlerin anahtarları, ilişkilendirilebilir diziler veya verilen dil için çağrılanlar dizelerdir (veya Perl'de "skalarlar"). Perl'de $foo{1}, $foo{1.0}, and $foo{"1"}
aynı eşlemeye yapılan tüm referanslar %foo
--- anahtar bir skaler olarak değerlendirilir !
JSON, bir Javascript serileştirme teknolojisi olarak başladı. (JSON, J Ava S cript O Nesne , N -rotasyon). Doğal olarak, eşleştirme semantik ile tutarlıdır, eşleştirme gösterim için semantik uygular.
Serileştirmenizin her iki ucu da Python olacaksa, turşu kullanmanız daha iyi olur. Bunları gerçekten JSON'dan yerel Python nesnelerine dönüştürmeniz gerekiyorsa, sanırım birkaç seçeneğiniz var. İlk try: ... except: ...
olarak, sözlükte bir arama hatası olması durumunda herhangi bir anahtarı sayıya dönüştürmeyi deneyebilirsiniz ( ). Alternatif olarak, diğer uca (bu JSON verilerinin serileştiricisi veya oluşturucusu) kod eklerseniz, anahtar değerlerinin her birinde bir JSON serileştirmesi gerçekleştirmesini sağlayabilirsiniz - bunları bir anahtar listesi olarak sağlar. (Daha sonra Python kodunuz önce anahtarlar listesi üzerinde yineler, bunları yerel Python nesneleri olarak somutlaştırır / serisini kaldırır ... ve sonra bunları eşlemeden değerlere erişmek için kullanır).