如何使用 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 方法不允许

如何从基于 REST 的 WCF 服务中读取授权标头?

无法在 WCF Rest 中获取未定义或空引用的属性“appendChild”

WCF Rest 服务请求对象的字段始终为空

通过 HTTPS 对 WCF 自托管 REST 服务的 POST 请求示例