RESTful部分请求&部分序列化

时间:2012-07-05 07:54:05

标签: c# .net rest serialization

我想执行动态查询+部分序列化。

假设我有这样的资源:

public class Unicorn
{
    public string Id { get; set; }
    public string Color { get; set; }
    public int Size { get; set; }
    public DateTime BirthDate { get; set; }
}

用户可以像这样制作部分RESTful请求:

GET /unicorn/{id}/?fields=id,color

如果请求XML,结果应为:

<Unicorn>
  <Id>10</Id>
  <Color>Purple</Color>
</Unicorn>

对于Json

{"Unicorn":
  {"Id":10,
  "Color":"Purple"}
}

我目前正致力于查询部分(表达树你是如此强大^^)

但是我对序列化部分有很多选择,其中没有一个非常令人满意。如您所见,序列化属性是动态指定的,因此可能无法进行属性修饰。

你会用什么?为什么? 之后我会编辑这篇文章,分享您的建议。

1 个答案:

答案 0 :(得分:3)

更改您的Unicorn类,确保使用nullables并使用EmitDefaultValue = false标记成员:

   [DataContract]
   public class Unicorn {   

    [DataMember (EmitDefaultValue=false)] 
    public string Id { get; set; }     

    [DataMember (EmitDefaultValue=false)] 
    public string Color { get; set; }     

    [DataMember (EmitDefaultValue=false)] 
    public int? Size { get; set; }     

    [DataMember (EmitDefaultValue=false)] 
    public DateTime? BirthDate { get; set; } 
} 

使用动态LINQ进行选择请参阅&gt;&gt; Dynamic LINQ example。我假设你正在做一个WCF REST应用程序,在这种情况下,这将根据你的例子进行序列化。