WCF阵列序列化 - REST

时间:2011-02-23 15:18:46

标签: xml wcf rest

我有一个REST Web服务,它返回一个包含更多结构数组的结构。这个返回结构如下所示:

[DataContract]
public class Response {
  private ResponseRecord[] m_Record;

  [DataMember]
  public int TotalRecords { get; set; }

  [DataMember]
  public ResponseRecord[] Record {
    get { return m_Record; }
    set { m_Record = value; }
  }
}

ResponseRecord类是这样的:

[DataContract(Name="Record")]
public class ResponseRecord {
  [DataMember(Order = 0)]
  public string RecordID { get; set; }
/* Many more objects */
}

我的网络服务返回这样的XML:

<Response>
  <TotalRecords>1</TotalRecords>
  <Record>
    <ResponseRecord>
      <RecordID>1</RecordID>
      ... Many more objects ...
    </ResponseRecord>
  </Record>
</Response>

我想要做的是摆脱“ResponseRecord”层级,因为它没有添加任何新信息。此Web服务也运行SOAP和XML,(Name =“Record”)属性可以解决问题。但是,出于某些原因,REST不是这样。为什么呢?

2 个答案:

答案 0 :(得分:1)

首先,我建议您将Record属性更改为Records,因为记录确实如此。

此外,如果您删除ResponseRecord,则无法将每个ResponseRecord实例的属性组合在一起。所以这是不可能的。

答案 1 :(得分:0)

结果我的数组设置不正确:

[DataContract]
public class Response {
  private ResponseRecord[] m_Record;

  [DataMember]
  public int TotalRecords { get; set; }

  [System.Xml.Serialization.XmlElementAttribute("Record")]   // <-- HERE
  public ResponseRecord[] Record {
    get { return m_Record; }
    set { m_Record = value; }
  }
}

这删除了ResponseRecord级别,这是我想要的。