【发布时间】:2011-12-12 14:37:21
【问题描述】:
我在序列化 JSON 中的对象以匹配 WCF 函数调用的参数名称时遇到问题。问题是映射参数名称,即传入的 JSON 字符串的起始值应与函数中传递的参数名称相同,例如
"{\"GetComplexDataResult\":{\"BoolValue\":true,\"StringValue\":\"Hello World!\"}}"
这是我在客户端调用的 WCF 函数,您可以看到参数名称与返回的“GetComplexDataResult”相同
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
String SaveData(CompositeType GetComplexDataResult);
出现的问题是当我尝试使用 Microsoft System.Web.Script.Serialization.JavaScriptSerializer 或任何其他库(例如 Json.NET)序列化我的对象时
即使我传递同一类“CompositeType”的对象(这是客户端代码),它也只会返回我{\"BoolValue\":true,\"StringValue\":\"Hello World!\"},例如
CompositeType GetComplexDataResult= new CompositeType();
GetComplexDataResult.BoolValue = true;
GetComplexDataResult.StringValue = "Hello World";
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(patchVersion);
我的问题是如何获取这个 JSON 字符串
"{\"GetComplexDataResult\":{\"BoolValue\":true,\"StringValue\":\"Hello World!\"}}"
代替
{\"BoolValue\":true,\"StringValue\":\"Hello World!\"}
只需将我的对象传递给 JSON 解析器。我可以在生成我的 JSON 字符串后手动连接它,但这会耗费太多时间。有没有可以解决这个问题的解析器。
【问题讨论】: