与WCF相当格式化的json响应

时间:2013-03-07 14:12:51

标签: .net wcf web-services

我正在使用以JSON格式响应的WCF RESTfull服务,但默认情况下,WCF服务发送的格式不是JSON消息(我的意思是没有制表的json对象)。

默认情况下,WCF发送JSON:

{"ResponseBody":{"Code":"0011","InvocationTime":278,"Message":""},"ResponseInformation":{"ServiceCode":0,"ServiceMessage":"Successfull","ServiceInvocationTime":0}}

但我需要这个:

{
"ResponseBody": {
    "Code": "0011",
    "InvocationTime": 278,
    "Message": ""
},
"ResponseInformation": {
    "ServiceCode": 0,
    "ServiceMessage": "Successfull",
    "ServiceInvocationTime": 0
}

有人知道这个简单问题的解决方案吗?谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用Json.NET。添加对库的引用(也可以作为NuGet包提供)并添加

using Newtonsoft.Json;

到您的班级文件。然后,执行以下操作:

var json = "{\"ResponseBody\":{\"Code\":\"0011\",\"InvocationTime\":278,\"Message\":\"\"},\"ResponseInformation\":{\"ServiceCode\":0,\"ServiceMessage\":\"Successfull\",\"ServiceInvocationTime\":0}}";
var formattedJson = JsonConvert.DeserializeObject(json).ToString();

答案 1 :(得分:0)

通常wcf以xml格式响应。如果你在json中指定响应,它将以jason格式给出结果。例如xml格式的请求和json格式的响应。

 [OperationContract]
    [WebInvoke(Method = "GET",
        RequestFormat = WebMessageFormat.Xml,
       ResponseFormat = WebMessageFormat.Json,
       BodyStyle = WebMessageBodyStyle.Bare,
       UriTemplate = "GetAllcustomer")]
   List< CustomerResponse> GetAllCustomerDetails();