SORU
7 EKİM 2009, ÇARŞAMBA


Google JSON serileştirme Motoru modelleri Uygulaması

Hiçbir başarı ile uzunca bir süre için arama oldum. Benim proje Django kullanarak değil, orada App Engine modelleri seri hale getirmek için basit bir yol (google.appengine.ext.db.Model) JSON veya kendi seri hale getirici yazmak gerekiyor mu? Model sınıfım oldukça basittir. Örneğin:

class Photo(db.Model):
    filename = db.StringProperty()
    title = db.StringProperty()
    description = db.StringProperty(multiline=True)
    date_taken = db.DateTimeProperty()
    date_uploaded = db.DateTimeProperty(auto_now_add=True)
    album = db.ReferenceProperty(Album, collection_name='photo')

Şimdiden teşekkürler.

CEVAP
7 EKİM 2009, ÇARŞAMBA


Basit bir özyinelemeli fonksiyonu simplejson geçirilen iç içe bir sözlük için bir varlık (ve herhangi bir referents) dönüştürmek için kullanılabilir:

import datetime
import time

SIMPLE_TYPES = (int, long, float, bool, dict, basestring, list)

def to_dict(model):
    output = {}

    for key, prop in model.properties().iteritems():
        value = getattr(model, key)

        if value is None or isinstance(value, SIMPLE_TYPES):
            output[key] = value
        elif isinstance(value, datetime.date):
            # Convert date/datetime to MILLISECONDS-since-epoch (JS "new Date()").
            ms = time.mktime(value.utctimetuple()) * 1000
            ms  = getattr(value, 'microseconds', 0) / 1000
            output[key] = int(ms)
        elif isinstance(value, db.GeoPt):
            output[key] = {'lat': value.lat, 'lon': value.lon}
        elif isinstance(value, db.Model):
            output[key] = to_dict(value)
        else:
            raise ValueError('cannot encode '   repr(prop))

    return output

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • fast2hell

    fast2hell

    16 AĞUSTOS 2006
  • Jabari Johnson

    Jabari Johns

    18 Ocak 2008
  • RiceBunny

    RiceBunny

    16 ŞUBAT 2006