3

我在基于 Pyramid/Cornice 的项目中使用滤锅将 JSON 字符串转换为 Python 对象,反之亦然。

有什么方法可以序列化/反序列化为不同的名称/键?

这是滤锅架构:

class CommentSchema(MappingSchema):
    resource_id = SchemaNode(Int(), name="resourceID", location="body")
    text = SchemaNode(String(), name="text", location="body")

这是输入 JSON

{"text":"Hello!", "resourceID":12}

它正在转换为:

{u'text': u'Hello!', u'resourceID': 12}

这是我的问题,我可以将相同的输入 JSON 转换为以下内容吗?

{u'full_text': u'Hello!', u'resource_id': 12}

谢谢你的帮助。

4

1 回答 1

1

我最终不得不手动完成。从 JSON 接收到的任何内容都用于构造数据对象。Object 将有一个自定义函数将数据映射到所需的输出格式,然后将输出传递给序列化器:

data_schema = DataSchema().deserialize(self.request.json)
data_obj = DataObject(data_schema**) // or DataObject(full_text = data_schema['text'], resource_id = data_schema['resourceID'])
#
# ...
#
rbody = DataSchema().serialize(data_obj.map_dump())
return Response(body=rbody, status_code=201)

DataObject 看起来像这样:

class DataObject(Object):

    def __init__(self, text, resourceID):  // or __init__(self, full_text, resource_id)
        self.text = text
        self.resourceID = resourceID

    def map_dump(self):
        output['full_text'] = self.text
        output['resource_id'] = self.resource
        return output
于 2015-01-07T19:07:05.877 回答