Сериализация строки JSON для соответствия параметру функции службы WCF

Я столкнулся с проблемой сериализации объекта в 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, но это займет слишком много времени. Есть ли парсер, решающий эту проблему.

6
задан Tarnschaf 20 March 2013 в 15:38
поделиться