WCF – 发布JSON对象

我正在尝试将JSON POST到WCF服务。 json对象包含一个数组。 我想知道如何正确绑定到我的数据合同。 如果有人能给我一个指针,我会非常感激。 目前我的购物车对象为空

这就是我的服务界面:

public interface IService { [OperationContract] [WebInvoke(UriTemplate = "/cart", Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json)] Ship GetShipInfo( Cart cart, string Website); } [DataContract] public class Cart { [DataMember] public Int32 ProductID { get; set;} [DataMember] public decimal ItemPrice { get; set; } [DataMember] public Int16 Qty { get; set; } [DataMember] public String SizeWidth { get; set; } } 

我的客户电话如下

客户致电

 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Runtime.Serialization.Json; using System.Net; using System.IO; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { DataContractJsonSerializer obj = new DataContractJsonSerializer(typeof(string)); Cart cart = new Cart{ ProductID = 1000, ItemPrice = Convert.ToDecimal(32.50), Qty = 1, SizeWidth = “6M” }; WebClient Proxy1 = new WebClient(); Proxy1.Headers["Content-type"] = “application/json”; MemoryStream ms = new MemoryStream(); DataContractJsonSerializer serializerToUplaod = new DataContractJsonSerializer(typeof(Cart)); serializerToUplaod.WriteObject(ms, cart); byte[] data = Proxy1.UploadData(“http://localhost:54897/IphoneService.svc/cart”, “POST”, ms.ToArray()); Stream stream = new MemoryStream(data); obj = new DataContractJsonSerializer(typeof(Ship)); var Ship = obj.ReadObject(stream) as Ship; } public class Ship { public Decimal SecondDay { get; set; } public Decimal NextDay { get; set; } } public class Cart { public Int32 ProductID { get; set; } public Decimal ItemPrice { get; set; } public Int16 Qty { get; set; } public String SizeWidth { get; set; } } } 

我的JSON看起来像这样

 {"cart": [ {"ProductID":2957, "Qty":1, "ItemPrice":60, "SizeWidth":"5M"} ] } 

您的WCF REST方法的原始请求应如下所示:Fiddler:

 POST http://localhost:54897/IphoneService.svc/cart HTTP 1.1 Content-Type: application/json Host: localhost {"cart":{"ProductId":1,"ItemPrice":60,"Qty":1,"SizeWidth":"5M"},"Website":"sample website"} 

JSON中的响应如下所示:

 HTTP/1.1 200 OK Content-Type: application/json Content-Length: 30 {"SecondDay":5.0, "NextDay":7.0}