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

  • 99being99

    99being99

    2 EYLÜL 2008
  • colacas

    colacas

    29 EKİM 2006
  • L- Crysis

    L- Crysis

    30 Aralık 2011