Sunday, August 18, 2019

Json.NET vs .NET Serializers

Json.NET offers many features not found in the JavaScriptSerializer and DataContractSerializer that come with .NET.

Feature Comparison:-
Json.NET
DataContractJsonSerializer
JavaScriptSerializer
Supports JSON
Supports BSON
Supports JSONPath
Supports .NET 2.0
Supports .NET 3.5
Supports .NET 4.0
Supports .NET 4.5
Supports Silverlight
Supports Windows Phone
Supports Windows Store
Supports Xamarin
Open Source
MIT License
LINQ to JSON
Thread Safe
XPath-like JSON query syntax
Indented JSON support
Deserializes IList, IEnumerable, ICollection, IDictionary properties
Serializes circular references
Supports serializing objects by reference
Deserializes polymorphic properties and collections
Serializes and deserializes multidimensional arrays
Supports including type names with JSON
Globally customize serialization process
Supports excluding null values when serializing
Supports SerializationBinder
Conditional property serialization
Includes line number information in errors
Converts XML to JSON and JSON to XML
JSON Schema validation
JSON Schema generation from .NET types
Camel case JSON property names
Non-default constructors support
Serialization error handling
Supports populating an existing object
Efficiently serializes byte arrays as base64 text
Handles NaN, Infinity, -Infinity and undefined
Handles JavaScript constructors
Serializes .NET 4.0 dynamic objects
Serializes ISerializable objects
Supports serializing enums to their text name
JSON recursion limit support
Attribute property name customization
Attribute property order customization
Attribute property required customization
Supports ISO8601 dates
Supports JavaScript constructor dates
Supports Microsoft AJAX dates
Unquoted property names support
Raw JSON support
Supports reading and writing comments
Serializes anonymous types
Deserializes anonymous types
Opt-in mode serialization
Opt-out mode serialization
Field (Serializable) mode serialization
Efficiently stream reading and writing JSON
Single or double quote JSON content
Supports overriding a type's serialization
Supports OnDeserialized, OnSerializing, OnSerialized and OnDeserializing attributes
Supports serializing private properties
DataMember attribute support
MetdataType attribute support
DefaultValue attribute support
Serializes DataSets and DataTables
Serializes Entity Framework
Serializes nHibernate
Case-insensitive property deserialization
Diagnostic tracing
Serializes read-only and immutable collections
Supports serialization extension data
Serializes F# discriminated unions
Serializes F# collections
Supports merging JSON

Benchmarks:-
performance

No comments:

Post a Comment

How to register multiple implementations of the same interface in Asp.Net Core?

 Problem: I have services that are derived from the same interface. public interface IService { } public class ServiceA : IService { ...