Reputation: 303
I'm creating a web service in WCF that returns JSON, but the DataContractJsonSerializer is balking on some circular references (which I can't remove in this particular case).
Instead, I'd like to use the Newtonsoft json library. What's the easiest way to create a custom serializer in WCF?
Note: I know I could just return a stream, but I don't want operation code aware of serialization stuff.
Upvotes: 7
Views: 9519
Reputation: 4344
Set IsReference attribute of DataContract to true, it is available with .NET 3.5SP1
[DataContract(IsReference = true)]
public class Employee
For more details see. MSDN DataContractAttribute.IsReference
Upvotes: 2
Reputation: 4551
you can uses ScriptIgnore attribute as mentioned here:- Ignoring a field during .NET JSON serialization; similar to [XmlIgnore]? Though I am looking forward to implement something like you want, don't want to decorate lot of nested objects
Upvotes: 0
Reputation: 2110
Very good article: XmlSerializer vs DataContractSerializer: Serialization in Wcf. There Dan Rigsby is showing different scenarios and how to make your own serializer in more detail.
Upvotes: 1
Reputation: 1063864
Re pure WCF: if you control both ends of the wire (on "full" .NET), then applying a custom serializer is relatively simple - you add a behaviour inherited from DataContractSerializerOperationBehavior
, and override CreateSerializer
- see here (with attribute here).
However! My understanding (untested) is that a JSON-enabled WCF service won't use this route, but will apply its own serializer directly.
Upvotes: 4