Sono di fronte a un problema di serializzazione di un oggetto in JSON per abbinare il nome parametro della chiamata di funzione WCF. Il problema è di mappare il nome del parametro, cioè la stringa JSON in entrata dovrebbe avere il valore iniziale come lo stesso nome del parametro passato nella funzione, ad es.Serializzazione della stringa JSON per la corrispondenza con il servizio WCF Funzione Parametro
"{\"GetComplexDataResult\":{\"BoolValue\":true,\"StringValue\":\"Hello World!\"}}"
Questa è la mia funzione WCF che io chiamo nel mio cliente e, come si può vedere il nome del parametro è uguale a quella che viene restituito "GetComplexDataResult"
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
String SaveData(CompositeType GetComplexDataResult);
Il problema che si verifica è quando provo a serializzare il mio oggetto usando Microsoft System.Web.Script.Serialization.JavaScriptSerializer
o qualsiasi altra libreria (es. Json.NET)
mi restituisce solo {\"BoolValue\":true,\"StringValue\":\"Hello World!\"}
anche se passo un oggetto della stessa classe "CompositeType" (Questo è il codice lato client) per esempio
CompositeType GetComplexDataResult= new CompositeType();
GetComplexDataResult.BoolValue = true;
GetComplexDataResult.StringValue = "Hello World";
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(patchVersion);
mia domanda è come posso ottenere questa stringa JSON
"{\"GetComplexDataResult\":{\"BoolValue\":true,\"StringValue\":\"Hello World!\"}}"
Invece di
{\"BoolValue\":true,\"StringValue\":\"Hello World!\"}
con da solo di passaggio il mio oggetto JSON parser. Posso concatenarlo manualmente dopo aver generato la mia stringa JSON, ma ciò richiederebbe troppo tempo per il lavoro. C'è un parser che risolve questo problema.
Grazie mille alla deriva questo ha funzionato per me. – adnangohar