2011-02-23 68 views
0

我有一個REST web服務,它返回一個包含更多結構數組的結構。這種回報結構是這樣的:WCF陣列序列化 - REST

[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 */ 
} 

我的Web服務將返回XML這樣的:

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

我想這樣做是擺脫那個「ResponseRecord」層級,因爲它沒有增加新的信息。這個Web服務也運行SOAP和XML,並且(Name =「Record」)屬性也有效。儘管如此,REST出於某種原因並非如此。爲什麼?

回答

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水平,這正是我想要的了。

1

首先,我建議你將Record屬性更改爲Records,因爲記錄真的是這樣。

此外,如果您刪除ResponseRecord,則不會有任何東西將每個ResponseRecord實例的屬性組合在一起。所以這是不可能的。

+0

我想我的意思是說我想擺脫的水平。這可能嗎? – 2011-02-25 16:45:01