我想使用Massive进行WCF Web Api的数据访问,并返回dynamic或ExpandoObject / IEnumerable< ExpandoObject>来自我的网页api。
我基本上使用JsonNetMediaTypeFormatter,它使用Json.NET的ExpandoObject序列化,但所有内容都作为Json中的Key-Value对返回,如:
[
{
"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格式化为具体对象的任何想法?
答案 0 :(得分:0)
Web WCF的自定义媒体类型格式化程序的一些细化:
我猜他可能正在使用json.net或其他库进行动态对象序列化
Web WCF
答案 1 :(得分:0)
我认为你正在使用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.
我希望这会对你有所帮助。如果还有其他事情,请告诉我。