Wcf休息服务与json响应和服务状态

时间:2016-02-10 10:43:46

标签: c# json web-services wcf rest

我有WCF REST服务返回像

这样的JSON响应
{
    "categories": [{
        "category_id": "10",
        "name": "Grocery",
        "freeQnty":"0",
        "prdcost":"100"
    }, {
        "category_id": "20",
        "name": "Beverages",
        "freeQnty":"1",
        "prdcost":"20"  
    }]
}

但我想要像服务状态一样回复。

{
    "success": true,
    "categories": [{
        "category_id": "10",
        "name": "Grocery",
        "freeQnty":"0",
        "prdcost":"100"
    }, {
        "category_id": "20",
        "name": "Beverages",
        "freeQnty":"1",
        "prdcost":"20"  
    }]
}

这是我的服务。

[OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "json/GetCustomerDetails/{customerid}")]
        Merchant GetCustomerDetails(string customerid);


[DataContract]
    public class categories
    {
        [DataMember]
        public int category_id{ get; set; }

        [DataMember]
        public string name { get; set; }

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

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

如果需要显示服务成功,如何获得成功状态 "成功":其他明智的 "成功":错误。

2 个答案:

答案 0 :(得分:0)

可能的变体:

[OperationContract]
[WebInvoke(
BodyStyle = WebMessageBodyStyle.Bare, //or WrappedRequest
Method = "GET",
ResponseFormat = WebMessageFormat.Json,     
UriTemplate = "/somemethod?param1={param1}&param2={param2}")]
System.ServiceModel.Channels.Message SomeMethod(string param1, string param2)
{
    // use JSON.NET to add missing properties etc: 
    var jObject = JObject.FromObject(yourObject); 
    jObject["success"] = true; 
    var json = jObject.ToString();

    WebOperationContext.Current.OutgoingResponse.ContentType = "application/json";
    return WebOperationContext.Current.CreateTextResponse(json);
}

答案 1 :(得分:0)

最好更改您的回复合同。 创建一个新的响应类,成员成功和类别如下,并返回

  [DataContract]
  public class YourResponse
{
    [DataMember]
    public bool Success { get; set; }

    [DataMember]
    public categories Categories{ get; set; }
}
相关问题