Compartir a través de


Serialización en Json con programación de nivel de mensaje

WCF admite la serialización de datos en formato JSON. En este tema se describe cómo indicar a WCF que serialice los tipos mediante .DataContractJsonSerializer

Programación de mensajes con tipo

DataContractJsonSerializer se usa cuando se aplica o WebGetAttributeWebInvokeAttribute a una operación de servicio. Ambos atributos permiten especificar y RequestFormatResponseFormat. Para usar JSON para solicitudes y respuestas. establezca ambos WebMessageFormat.Jsonen . Para usar JSON, debe usar , WebHttpBindingque configura automáticamente .WebHttpBehavior Para obtener más información sobre la serialización de WCF, vea Serialización y deserialización. Para obtener más información sobre JSON y WCF, vea Service Station - An Introduction To RESTful Services With WCF (Introducción a los servicios RESTful con WCF).

Importante

El uso de JSON requiere el uso de WebHttpBinding y WebHttpBehavior que no admiten la comunicación SOAP. Los servicios que se comunican con WebHttpBinding no admiten la exposición de metadatos del servicio, por lo que no podrá usar la funcionalidad Agregar referencia de servicio de Visual Studio ni la herramienta de línea de comandos svcutil para generar un proxy del lado cliente. Para obtener más información sobre cómo puede llamar mediante programación a los servicios que usan WebHttpBinding, vea Cómo consumir servicios REST con WCF.

Programación de mensajes sin tipo

Al trabajar directamente con objetos Message sin tipo, debe establecer explícitamente las propiedades en el mensaje sin tipo para serializarlo como JSON. El siguiente fragmento de código muestra cómo hacerlo.

 Message response = Message.CreateMessage(  
                  MessageVersion.None,    // No SOAP message version  
                             "*",                     // SOAP action, ignored since this is JSON  
                             "Response string: JSON format specified", // Message body  
                             new DataContractJsonSerializer(typeof(string))); // Specify DataContractJsonSerializer  
      response.Properties.Add( WebBodyFormatMessageProperty.Name,
                    new WebBodyFormatMessageProperty(WebContentFormat.Json)); // Use JSON format  

Consulte también