当前位置: 首页 > 面试题库 >

Google App Engine模型的JSON序列化

百里骏
2023-03-14
问题内容

我已经搜索了很长时间,但没有成功。我的项目未使用Django,是否有一种简单的方法可以将App
Engine模型(google.appengine.ext.db.Model)序列化为JSON,还是需要编写自己的序列化程序?

模型:

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')

问题答案:

一个简单的递归函数可用于将一个实体(和任何引用对象)转换为可传递给的嵌套字典simplejson

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


 类似资料:
  • 问题内容: 我想使用simplejson序列化Django模型。Django的序列化器不支持字典…,而simplejson不支持Django Querysets。这是一个难题。 在该模型中,有一个具有“外键”赞助商级别的赞助商,我试图将属于某个赞助商级别的所有赞助商分组在一起。这是生成列表的代码: 这是“制造”后的样子 我只在每个级别添加了一个赞助商,除了铜牌,只是为了展示其工作原理。我要做的就是

  • 我有一个pojo类型,需要在序列化时将特定的数值设置为特殊字符串。这些值将始终为空,可能深入到层次结构中。 为了做到这一点,我首先将pojo转换为一个JsonNode,保留空值以保持属性顺序,然后按照结构中的路径设置一些字符串并根据需要创建节点。最后,我让ObjectMapper将JsonNode序列化为字符串。逻辑看起来像这样: 注意,我知道有一个注释,所以我实际上不需要两个映射器,但事实证明,

  • 问题内容: 当谈到Dart中的JSON编码时,根据Seth Ladd的赞誉 ,现在最终批准的正式方式是+ 。 假设我们有一堆模型类(PODO),例如: 现在,我希望能够像这样对我的域对象进行JSON编码: 不幸的是,这行不通… …除非我们明确告知如何编码: 我真的必须在模型类的每个类中添加一个方法,还是有更好的方法? 编辑 :这是我正在寻找的简单序列化: 例如,在ServiceStack.Text

  • 问题内容: 可以说我有以下格式的JSON: 我试图避免自定义反序列化器,并尝试将上述JSON(称为Wrapper.java)反序列化为Java POJO。“类型”字段指示“对象”反序列化,即。type = foo表示使用Foo.java反序列化“ object”字段。(如果type = Bar,则使用Bar.java反序列化对象字段)。元数据/所有者将始终使用相同的反序列化方式,每个方法都使用一个

  • 问题内容: 我正在尝试序列化定义为的模型对象列表: 我为json.dumps()写了一个自定义的序列化器(编码器): 当我仅序列化一个对象时,我就能做到。当我尝试序列化对象列表时,我得到 我进行了搜索,但是没有找到工作的地方。.我在考虑为模型对象列表编写自定义序列化程序。 问题答案: 自定义编码器不会递归调用。实际上,最好 不要 使用自定义编码器,而应在序列化之前将对象转换为简单的python类型

  • 我正在使用Betfair的API开发一个REST web应用程序,因此我需要序列化/反序列化JSON,以便发送HttpRequest并读取HttpResponse。 POM依赖项 我错在哪?