什么是datacontract json?
在WCF(Windows Communication Foundation)中,datacontract json是一種數據交換格式,它通過JSON(JavaScript Object Notation)將.NET類型序列化為JSON格式,以便于在Web應用程序之間傳輸。
如何使用datacontract json?
首先,在服務契約中聲明使用datacontract json,可以使用如下代碼:
[ServiceContract] [DataContractFormat(Style = OperationFormatStyle.Json)] public interface IService { [OperationContract] [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)] string GetData(); }
在上述代碼中,我們使用了DataContractFormat屬性來指定我們希望契約使用JSON格式而不是默認的XML格式,這樣我們就可以在Web應用程序之間傳輸.NET類型的數據。
然后,在實現中,我們需要標記我們的類型使用DataContract或DataMember屬性,例如:
[DataContract] public class MyData { [DataMember] public int Id { get; set; } [DataMember] public string Name { get; set; } }
在上述代碼中,我們使用了DataContract和DataMember屬性來標記我們的類型和成員,以便在序列化時能正確的識別數據成員。
最后,在我們服務方法的返回值類型前面加上WebGet或WebInvoke屬性,并指定ResponseFormat為WebMessageFormat.Json即可使用datacontract json返回json數據,例如:
public string GetData() { MyData data = new MyData { Id = 1, Name = "John" }; return JsonConvert.SerializeObject(data); }
在上述代碼中,我們使用了JsonConvert.SerializeObject方法將我們的類型序列化為JSON字符串,并將其返回。
在使用datacontract json來進行WCF服務的數據交換時,需要在客戶端和服務器端都使用DataContractJsonSerializer來進行序列化和反序列化,這樣才能正確的識別數據成員。