NancyFx模型绑定& Ember-Data的序列化

时间:2014-03-12 12:01:17

标签: json serialization ember.js ember-data nancy

我试图将Ember-Data连接到NancyFx。我看到一些问题的一个方面是模型绑定和序列化,以满足Ember-Data的要求。

例如,在PUT上,Ember-Data发送JSON,如下所示:

{"user": {"username": "fred"}}

但是NancyFx默认似乎更喜欢它:

{"username": "fred"}

我有没有简单的方法让NancyFx将绑定模型绑定到Ember-Data发送它的方式?

同样,在进行GET时,Ember-Data需要JSON,如下所示:

{ users: [{ id = 1, username = 'fred' }] }

但是像这样的NancyFx序列化器:

[{ id = 1, username = 'fred' }]

有没有简单的方法可以将NancyFx序列化更改为Ember-Data期望的格式?

1 个答案:

答案 0 :(得分:3)

在看跌期权中你应该能够绑定到这样的东西:

public class Model
{
    public User User { get; set; }
}

public class User
{
    public string Username { get; set; }
}

在您的模块中:

Put["/somepath/"] = p =>
{
    var model = this.bind<Model>();
    // do your thing
}

并从您的GET返回该结构:

Get["/somepath/"] = p =>
{
    return new { Users = new [] { new { Id= 1, Username = "fred" } } };
}

(谨慎之处:没有运行它,它只是来自记忆)

更新

如果您想控制序列化和反序列化,那只需要实现2个小接口 - IResponseProcessorIBodyDeserializer。有关这方面的示例,请查看this gist,了解如何为协议缓冲区实现它们。

请注意,Nancy会自动发现您的IResponseProcessorIBodyDeserializer的实现,并将它们挂钩到模型绑定和序列化中。