更改从wcf服务方法返回的json对象包装器名称

时间:2012-10-05 11:09:12

标签: c# asp.net json wcf wcf-binding

我创建了一个WCF 3.5应用程序,其中包含一个名为TestMe的方法,如下所示:

 [OperationContract]
        [WebInvoke(UriTemplate = "/Login", Method = "POST",
            BodyStyle = WebMessageBodyStyle.Wrapped,
            ResponseFormat = WebMessageFormat.Json,
            RequestFormat = WebMessageFormat.Json)]
        MyDictionary<string, string> TestMe(string param1, string param2);

MyDictionary是使用以下链接创建的:https://stackoverflow.com/a/7590189/546033

这里的一切都很好。但问题是从以下实现的方法返回数据时:

MyDictionary<string, string> success = new MyDictionary<string, string>();
success["desc"] = "Test";
return success;

它返回json:

{"TestMeResult":{"desc":"Test"}}

虽然我需要的是:

{"success":{"desc":"Test"}}

其中success是对象名称。可以解决这个问题的方法是什么?

1 个答案:

答案 0 :(得分:3)

只需删除BodyStyle = WebMessageBodyStyle.Wrapped, 它默认为WebMessageBodyStyle.Bare,但必须自己明确声明它。

修改

因为你正在处理JSON不会有帮助,因为它适用于XML风格。所以步骤是:

  1. 声明它是裸的,所以你可以发送json。
  2. 使用json反序列化器编写自己的包装器(http://msdn.microsoft.com/en-us/library/bb412179.aspx)
  3. 您也可以查看此链接,了解内部发生的事情:

    http://msdn.microsoft.com/en-us/library/bb412170.aspx