Возврат Json с помощью PetaPoco Dynamic и WebAPI

Можно ли использовать динамический запрос PetaPoco для возврата Json в ASP.net WebAPI?

// Контроллер веб-API

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)


person MHop    schedule 18.04.2012    source источник
comment
Я никогда не использовал PetaPoco, но пробовали ли вы преобразовывать возвращенные объекты в динамические экземпляры JsonObject или JsonArray? goo.gl/BaIx5   -  person cecilphillip    schedule 19.04.2012


Ответы (2)


JSON.Net обрабатывает это из коробки, поэтому мне пришлось добавить Custom Formatter.

Это статья MSDN, которую я использовал для решения проблемы: http://code.msdn.microsoft.com/Using-JSONNET-with-ASPNET-b2423706

person MHop    schedule 19.04.2012

Поскольку PetaPoco возвращает List<dynamic>, реальный ответ здесь будет "Может ли WebApi вернуть Json из списка"?

Ответ положительный, но в WebApi есть вещь под названием Content Negotiation, чем возвращать Json или XML на основе запроса.

Попробуйте запросить Json или попробуйте это для XML:

    // Show all Branches
    return (IEnumerable<dynamic>)db.Query<dynamic>("SELECT * FROM Branches");
person Eduardo Molteni    schedule 19.04.2012