gpt4 book ai didi

c# - 序列化 JSON 字符串以匹配 WCF 服务函数参数

转载 作者:太空狗 更新时间:2023-10-29 21:35:45 26 4
gpt4 key购买 nike

我在序列化 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)序列化我的对象时

它只返回我 {\"BoolValue\":true,\"StringValue\":\"Hello World!\"} 即使我传递了同一个类“CompositeType”的对象(这是客户端代码)例如

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 字符串后手动连接它,但这会非常耗时。有没有解决这个问题的解析器。

最佳答案

如果您使用参数名称作为属性名称序列化一个匿名对象,它将包含在 json 字符串中。试试这个:

string json = serializer.Serialize(new { GetComplexDataResult = patchVersion});

此外,如果您根本不关心参数名称是否包含在 JSON 中,您可以将 BodyStyle 设置为 BodyStyle = WebMessageBodyStyle.Bare

关于c# - 序列化 JSON 字符串以匹配 WCF 服务函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8475954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com