如何使用wcf REST服务获取自定义对象的json响应?

如何使用wcf REST服务获取自定义对象的json响应?,wcf,wcf-rest,Wcf,Wcf Rest,如何序列化对象以返回自定义类型 //The response is null. http://localhost:50604/GameService/Getbyid?id=1 [WebGet(ResponseFormat = WebMessageFormat.Json)] public MyClass GetById(int id) [DataContract] [KnownType(typeof(User))] public partial class MyClass { [D

如何序列化对象以返回自定义类型

//The response is null. 
http://localhost:50604/GameService/Getbyid?id=1

[WebGet(ResponseFormat = WebMessageFormat.Json)]
public MyClass GetById(int id)


[DataContract]
[KnownType(typeof(User))]
public partial class MyClass
{
    [DataMember]
    public int Id { get; set; }
    [DataMember]
    public string Name { get; set; }
    [DataMember]
    public int? CreatedBy { get; set; }
    [DataMember]
    public virtual User CreatedByUser { get; set; } //How will I serialize this?
}

您的操作缺少
UriTemplate
,因此您的Id可能永远不会传入,并且您的方法的默认值为0

试试这个:

[WebGet(UriTemplate="Getbyid?id={id}", ResponseFormat = WebMessageFormat.Json)]
public MyClass GetById(int id)

CreatedByUser
如果已填充并且用户也是数据契约,则会自动序列化。

我已经添加了一个uritemplate,但它仍然没有重新序列化返回对象。你说的“未实现返回对象”是什么意思?我的意思是“序列化”对不起。。当我删除这行代码>>公共虚拟用户CreatedByUser{get;set;}时,它可以正常工作。如何获取数据?顺便说一句,您的
CreatedByUser
没有标记为
DataMember
,因此它不会被序列化。我尝试放置
DataMember
,但仍然没有序列化。我试图删除
virtual
关键字,但是
CreatedByUser
是空的。