【问题标题】:Return Entity Framework objects as JSON with NancyFx使用 NancyFx 将实体框架对象作为 JSON 返回
【发布时间】:2016-10-28 17:04:24
【问题描述】:

我正在使用 NancyFX 和 C# 与 .NET 4.0 构建一个小型 API(用于读取操作 - GET)

我正在使用 Entity Framework 6.0 来访问 SQL Server 2008R2 数据库。

我向南希公开了以下路线(这仅用于测试目的):

public ExampleNancyModule() 
{
    Get["/v1/address_types"] = parameters =>
    {
        var address_types = context.address_type.First();
        return Response.AsJson(address_types);
    };
}

我可以使用 Postman 访问该路线,但是我收到的是一个空的响应正文。如何使用 Nancy 返回对象和/或对象列表?

我想还有更多的配置需要先完成。我是 Nancy 的新手,我今天早上才开始使用它。看起来很有希望!

感谢您的支持。

【问题讨论】:

  • address_types 里有什么东西吗?
  • 是的,address_types var 不为空,它包含 address_type 表的第一行。
  • 我没有检查Response.AsJson 做了什么,但我通常只用 return 语句从 nancy 那里得到 json 响应。尝试删除 Response.AsJson 并将 Content-Type:application/json 作为标题发送。
  • 谢谢,我找到了解决方案,我会在稍后添加。

标签: c# json entity-framework nancy


【解决方案1】:

我找到了这个案例的解决方案:

我已经用 NewtonSoft.Json 更改了 Nancy 附带的默认 Json 序列化程序

ExampleNancyModule 中的代码保持不变,但是我添加了一个 Boostrap 文件来覆盖 Nancy 的默认行为。我的 Bootstrap.cs 文件如下所示:

namespace MyProject
{
    public class Bootstrap : DefaultNancyBootstrapper
    {
        protected override void ConfigureApplicationContainer(TinyIoCContainer container)
        {
            base.ConfigureApplicationContainer(container);

            container.Register<JsonSerializer, CustomJsonSerializer>();
        }
    }

    public class CustomJsonSerializer : JsonSerializer
    {
        public CustomJsonSerializer()
        {
            this.ContractResolver = new CamelCasePropertyNamesContractResolver();
            this.Formatting = Formatting.Indented;
        }
    }
}

有了这个,我可以获得一个 JSON 响应,它尊重我的实体框架模型的属性和 JSON 配置。希望这对其他人有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 2012-10-25
    • 1970-01-01
    • 2019-09-18
    相关资源
    最近更新 更多