【问题标题】:Return Json Using PetaPoco Dynamic & WebAPI使用 PetaPoco 动态和 WebAPI 返回 Json
【发布时间】:2012-04-30 04:39:10
【问题描述】:

是否可以使用 PetaPoco 动态查询在 ASP.net WebAPI 中返回 Json?

//WebAPI 控制器

public class BranchController : ApiController
{
    public IEnumerable<dynamic> Get()
    {
        // Create a PetaPoco database object
        var db = new PetaPoco.Database("DefaultConnection");

        // Show all Branches
        var b = db.Query<dynamic>("SELECT * FROM Branches").ToList();

        return b;
    }

}

我收到一个错误

要实现 XML 可序列化,从 IEnumerable 继承的类型必须具有 Add(System.Object) 的实现

【问题讨论】:

  • 我从未使用过 PetaPoco,但您是否尝试过将返回的对象转换为动态 JsonObject 或 JsonArray 实例? goo.gl/BaIx5

标签: c# json c#-4.0 asp.net-mvc-4 petapoco


【解决方案1】:

JSON.Net 开箱即用地处理这个问题,所以我不得不添加一个自定义格式化程序。

这是我用来解决问题的 MSDN 文章:http://code.msdn.microsoft.com/Using-JSONNET-with-ASPNET-b2423706

【讨论】:

    【解决方案2】:

    由于 PetaPoco 返回 List&lt;dynamic&gt;,这里的真正答案是 “WebApi 可以从列表中返回 Json”

    答案是肯定的,但是WebApi有一个叫Content Negotiation的东西,而不是根据请求返回Json或者XML。

    尝试请求 Json 或尝试使用 XML:

        // Show all Branches
        return (IEnumerable<dynamic>)db.Query<dynamic>("SELECT * FROM Branches");
    

    【讨论】:

      猜你喜欢
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 2012-05-07
      • 2017-07-22
      • 2014-05-10
      • 2019-05-18
      • 1970-01-01
      相关资源
      最近更新 更多