2009-06-08 15 views
7

Estoy creando un servicio web en WCF que devuelve JSON, pero el DataContractJsonSerializer está frenando algunas referencias circulares (que no puedo eliminar en este caso particular).WCF serializador personalizado

En su lugar, me gustaría utilizar la biblioteca Newtonsoft json. ¿Cuál es la forma más fácil de crear un serializador personalizado en WCF?

Nota: Sé que podría devolver una transmisión, pero no quiero que el código de operación tenga en cuenta las cuestiones de serialización.

Respuesta

4

Re pura WCF: si el control de ambos extremos del cable (en .NET "lleno"), a continuación, aplicar un serializador personalizado es relativamente simple - se agrega un comportamiento heredado de DataContractSerializerOperationBehavior y anular CreateSerializer - ver here (con el atributo here).

¡Sin embargo! Mi entendiendo (no probado) es que un servicio WCF habilitado para JSON no usará esta ruta, pero aplicará su propio serializador directamente.

+0

Esto casi funciona, pero mi json se está envolviendo en un nodo raíz xml, así: {"Id": 0, "IsFinalized": falso, "IsTemplate": falso} rogueg

+0

Los enlaces parecen estar rotos. – Adrian773

2

Conjunto de atributos IsReference de DataContract de verdad, está disponible con .NET 3.5SP1

[DataContract(IsReference = true)] 
public class Employee 

Para más detalles ver. MSDN DataContractAttribute.IsReference

+0

voto para el enlace roto –

+2

Enlace roto fijo – Morbia

Cuestiones relacionadas