SORU
20 EYLÜL 2009, Pazar


'json modülü s, dönüştürür sözlük anahtarları int dizeleri için Python

Aşağıdaki çalıştırıldığında, python json modülü (2.6 beri dahil) dizeleri int sözlük anahtarları dönüştürür bulduk.

>>> import json
>>> releases = {1: "foo-v0.1"}
>>> json.dumps(releases)
'{"1": "foo-v0.1"}'

Herhangi bir kolay yolu bir int olarak anahtar, dökümü ve yük dizesini ayrıştırmak gerek kalmadan korumak için vardır. Olası kancalar json modülü tarafından sağlanan kullanarak olacağını düşünüyorum, fakat yine de bu hala ayrıştırma gerektirir. Muhtemelen gözden kaçan bir argüman var mı? şerefe, chaz

Soru: Cevaplar için teşekkürler. Korktuğum gibi json çalıştığını görünce, belki döker çıkışını ayrıştırma anahtar türü iletmek için kolay bir yolu var mı? Ayrıca kod damping yapmaya dikkat etmelisiniz ve kodu bir sunucudan json nesne indirme ve yükleme, hem de benim tarafımdan yazılmıştır.

CEVAP
20 EYLÜL 2009, Pazar


Bu ısırık çeşitli eşleme koleksiyonları arasında o ince farklar biridir.

Python (ve görünüşe göre Lua) bir eşleme anahtarı (sözlük ya da tablo, sırasıyla) nesneye başvuruyor. Python değişmez türleri olmalılar, ya da __hash__ bir yöntemi uygulayan nesneler olmalıdır. (Lua dokümanlar otomatik olarak karma/anahtar değişken nesneler için bile nesnenin KİMLİĞİ kullanır ve dize staj eşdeğer dizeleri aynı nesneleri göster sağlamak için kullanan öneririm).

Perl, Javascript, awk ve diğer birçok dilde verilen dil için ne derlerse desinler sağlamalarının için anahtarlar, ilişkisel diziler ya, dizeleri"") Perl alırım. (ya Perl $foo{1}, $foo{1.0}, and $foo{"1"} %foo --- anahtar aynı eşleştirme için başvuruyordeğerlendirdibir skaler!

Javascript JSON serileştirme bir teknoloji olarak başladı. ([J]için JSON duruyor ava[S]cript (o) bject [n]otation.) Doğal olarak, eşleştirme semantiği ile tutarlı bir eşleme gösterim için semantik uygular.

Eğer serileştirme iki ucu Python olacak olursa, o zaman turşu kullanarak daha iyi olurdu. Eğer gerçekten bu JSON geri yerli Python nesneleri dönüştürmek için gerekirse bir kaç seçenek var sanırım. İlk (try: ... except: ...) bir sözlük arama başarısızlık durumunda bir sayı için herhangi bir tuşa dönüştürmek için deneyebilirsiniz. Alternatif olarak, eğer siz ekleyin kod için diğer ucu (seri hale getirici veya jeneratör bu JSON veri) o zaman sen bunu gerçekleştirmek bir JSON serileştirme her temel değerleri --- şayet bu gibi bir liste anahtarları. (Python kodunuzu ilk anahtarlarının listesi,/yerli Python nesneleri içine kaldırmada başlatmasını üzerinde yineleme ve haritalama dışarı değerlere erişmek için bunları kullanın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hockeywebcasts

    hockeywebcas

    31 EKİM 2012
  • Jonathan Leack

    Jonathan Lea

    26 ŞUBAT 2007
  • TheMasterOfHell100

    TheMasterOfH

    13 AĞUSTOS 2011