返回Json使用PetaPoco Dynamic&的WebAPI

时间:2012-04-18 17:46:04

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

是否可以使用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)的实现

2 个答案:

答案 0 :(得分:2)

JSON.Net开箱即用,因此我必须添加自定义格式化程序。

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

答案 1 :(得分:0)

由于PetaPoco返回List<dynamic>,这里真正的答案是“WebApi可以从列表中返回Json”吗?

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

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

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