使用 WCF Web Api 大量返回动态类型/Expandos?

Posted

技术标签:

【中文标题】使用 WCF Web Api 大量返回动态类型/Expandos?【英文标题】:Massive with WCF Web Api to return dynamic types/Expandos? 【发布时间】:2011-12-19 16:23:51 【问题描述】:

我想通过 WCF Web Api 使用 Massive 进行数据访问,并从我的 Web api 返回动态或 ExpandoObject / IEnumerable

我基本上使用 JsonNetMediaTypeFormatter 工作,它使用 Json.NET 的 ExpandoObject 序列化,但所有内容都作为 Json 中的键值对返回,例如:

[
    
        "Key":"ID",
        "Value":"1000"
    ,
    
        "Key":"FirstName",
        "Value":"John"
    ,
    
        "Key":"LastName",
        "Value":"Smith"
    
]

但是,我想要的是:

[
    
        "ID":"1000",
        "FirstName":"John",
        "LastName":"Smith",
    
]

好像我使用的是具体类型,例如:

public class Customer

    public int ID  get; set; 
    public string FirstName  get; set; 
    public string LastName  get; set; 

关于从 WCF Web Api 返回时如何将动态/ExpandoObject 格式化为具体对象的任何想法?

【问题讨论】:

没关系,我通过清除现有的格式化程序集合让它工作了。我以为我已经这样做了,但是我设置了一个断点以查看它是否正在访问我的 JsonNetMediaTypeFormatter,但事实并非如此。又试了一次,现在可以了。 你能发布你正在使用的代码吗? 是的,我也可以有一份副本吗...我现在正在尝试这样做 简单,WCF Serialization of DLR dynamic types 【参考方案1】:

关于 Web WCF 的自定义媒体类型格式化程序的一些详细说明:

http://geekswithblogs.net/michelotti/archive/2011/06/06/understanding-custom-wcf-web-api-media-type-processors-on-both.aspx

我猜他可能正在使用 json.net 或其他库进行动态对象序列化

http://blogs.clariusconsulting.net/kzu/using-json-net-for-text-and-binary-json-payloads-with-wcf-webapi/

网络 WCF

http://wcf.codeplex.com/wikipage?title=WCF%20HTTP

【讨论】:

【参考方案2】:

我认为您正在使用 Expando Query 并将其传递给 WCF。只需尝试进行迭代或将 ToList 提供给您的集合。这会将 ExpandoQuery 转换为 Expando 对象集合。如果你是 POCO 来映射,因为客户在你的问题中。使用您的 POCO 对象进行选择。

如果您的查询是

Dynamic CustomerTable = DynamicObject("ConnectionString","TableName","PrimeryKey");

CustomerTable.All() //This will be ExpandoQuery

CustomerTable.All().Select(c=> new Customer () FistName = c.FirstName, LastName = c.LastName); // This will give collection of customer object. Just pass this as DTO to your WCF service.

我希望这会对你有所帮助。让我知道是否还有其他内容。

【讨论】:

以上是关于使用 WCF Web Api 大量返回动态类型/Expandos?的主要内容,如果未能解决你的问题,请参考以下文章

Web Service ,WCF以及Web API的对比

ASP.Net Web API 与 WCF - Web API 能否用于向单例 WCF 服务提供基于 REST 的通信?

.net web api 一

在 WCF 服务中传输大量数据

Web Service vs WCF vs WCF REST vs Web API

Web Service vs WCF vs WCF REST vs Web API