如何使用 wcf REST 服务获取自定义对象的 json 响应?
Posted
技术标签:
【中文标题】如何使用 wcf REST 服务获取自定义对象的 json 响应?【英文标题】:How to get json response of a custom object using wcf REST services? 【发布时间】:2011-09-28 01:19:04 【问题描述】:如何序列化对象以返回自定义类型?
//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?
【问题讨论】:
【参考方案1】:您的操作缺少 UriTemplate
,因此您的 Id 可能永远不会传入,并且您的方法使用默认值 = 0。
试试这个:
[WebGet(UriTemplate="Getbyid?id=id", ResponseFormat = WebMessageFormat.Json)]
public MyClass GetById(int id)
CreatedByUser
如果被填充并且如果用户也是数据合约,将自动序列化。
【讨论】:
我已经添加了一个uritemplate,但它仍然没有重新实现返回对象。 “没有实现返回对象”是什么意思? 我的意思是“序列化”对不起..当我删除这行代码时它工作正常 >> public virtual User CreatedByUser get;放; 如何获取数据?顺便提一句。你的CreatedByUser
没有标记DataMember
所以它不会被序列化。
我试图把 DataMember
但仍然没有序列化。我试图删除 virtual
关键字,它可以工作,但 CreatedByUser
是空的。以上是关于如何使用 wcf REST 服务获取自定义对象的 json 响应?的主要内容,如果未能解决你的问题,请参考以下文章
WCF REST:使用我自己的自定义验证器时加密凭据 - UserNamePasswordValidator?
自托管 WCF REST 服务 JSON POST 方法不允许