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

  • 10 Daughters, 2 Sons

    10 Daughters

    10 Mart 2009
  • FRED

    FRED

    1 EKİM 2005
  • Sorikan

    Sorikan

    3 ŞUBAT 2008