Json.NET Changelog

What's new in Json.NET 13.0 Release 3

Mar 8, 2023
  • Fix - Fixed parsed zero decimals losing trailing zeroes
  • Fix - Fixed parsed negative zero double losing negative
  • Fix - Fixed null string being reported as String rather than JTokenType.Null

New in Json.NET 13.0 Release 2 (Nov 24, 2022)

  • New feature - Add support for DateOnly and TimeOnly
  • New feature - Add UnixDateTimeConverter.AllowPreEpoch property
  • New feature - Add copy constructor to JsonSerializerSettings
  • New feature - Add JsonCloneSettings to disable copy annotations
  • Change - Add nullable annotation to JToken.ToObject(Type, JsonSerializer)
  • Change - Reduced allocations by reusing boxed values
  • Fix - Fixed MaxDepth when used with ToObject inside of a JsonConverter
  • Fix - Fixed deserializing mismatched JToken types in properties
  • Fix - Fixed merging enumerable content and validate content
  • Fix - Fixed using $type with arrays of more than two dimensions
  • Fix - Fixed rare race condition in name table when deserializing on device with ARM processors
  • Fix - Fixed deserializing via constructor with ignored base type properties
  • Fix - Fixed MaxDepth not being used with ISerializable deserialization

New in Json.NET 13.0 Release 1 (Mar 23, 2021)

  • New feature - Add JsonSelectSettings with configuration for a regex timeout
  • Change - Remove portable assemblies from NuGet package
  • Change - JsonReader and JsonSerializer MaxDepth defaults to 64
  • Fix - Fixed throwing missing member error on ignored fields
  • Fix - Fixed various nullable annotations
  • Fix - Fixed annotations not being copied when tokens are cloned
  • Fix - Fixed naming strategy not being used when deserializing dictionary enum keys
  • Fix - Fixed serializing nullable struct dictionaries
  • Fix - Fixed JsonWriter.WriteToken to allow null with string token
  • Fix - Fixed missing error when deserializing JToken with a contract type mismatch
  • Fix - Fixed JTokenWriter when writing comment to an object

New in Json.NET 12.0 Release 3 (Nov 9, 2019)

  • New feature - Added support for nullable reference types
  • New feature - Added KebabCaseNamingStrategy
  • Change - Package now uses embedded package icon
  • Fix - Fixed bug when merging JToken with itself
  • Fix - Fixed performance of calling ICustomTypeDescriptor.GetProperties
  • Fix - Fixed serializing Enumerable.Empty and empty arrays
  • Fix - Fixed deserializing some collection types with constructor
  • Fix - Fixed deserializing IImmutableSet to ImmutableHashSet instead of ImmutableSortedSet
  • Fix - Fixed deserializing IImmutableDictionary to ImmutableDictionary instead of ImmutableSortedDictionary
  • Fix - Fixed deserializing into constructors with more than 256 parameters
  • Fix - Fixed hang when deserializing JTokenReader with preceding comment
  • Fix - Fixed JSONPath scanning with nested indexer
  • Fix - Fixed deserializing incomplete JSON object to JObject
  • Fix - Fixed using StringEnumConverter with naming strategy and specified values

New in Json.NET 12.0 Release 2 (Apr 22, 2019)

  • New feature - Added MissingMemberHandling to JsonObjectAttribute and JsonObjectContract
  • New feature - Added constructor to JTokenReader to specify initial path
  • New feature - Added JsonProperty.IsRequiredSpecified
  • New feature - Added JsonContract.InternalConverter
  • Change - Moved embedded debug symbols in NuGet package to a symbol package on NuGet.org
  • Fix - Fixed deserializing nullable struct collections
  • Fix - Fixed memory link when serializing enums to named values
  • Fix - Fixed error when setting JsonLoadSettings.DuplicatePropertyNameHandling to Replace

New in Json.NET 12.0 Release 1 (Nov 28, 2018)

  • New feature - Added NuGet package signing
  • New feature - Added Authenticode assembly signing
  • New feature - Added SourceLink support
  • New feature - Added constructors to StringEnumConverter for setting AllowIntegerValue
  • New feature - Added JsonNameTable and JsonTextReader.PropertyNameTable
  • New feature - Added line information to JsonSerializationException
  • New feature - Added JObject.Property overload with a StringComparison
  • New feature - Added JsonMergeSettings.PropertyNameComparison
  • New feature - Added support for multiple Date constructors with JavaScriptDateTimeConverter
  • New feature - Added support for strict equals and strict not equals in JSON Path queries
  • New feature - Added EncodeSpecialCharacters setting to XmlNodeConverter
  • New feature - Added trace message for serializing to non-writable properties
  • New feature - Added support for NamingStrategy to StringEnumConverter
  • New feature - Added JsonLoadSettings.DuplicatePropertyNameHandling setting
  • Change - JTokenReader now uses JsonReader.DateTimeZoneHandling setting for date values
  • Change - Excluded TargetSite when serializing Exceptions without SerializableAttribute
  • Change - Changed StringEnumConverter.ctor(bool camelCaseText) to obsolete
  • Change - Changed StringEnumConverter.CamelCaseText to obsolete
  • Fix - Fixed incorrect overflow when reading decimal values from JSON
  • Fix - Fixed error message when trying to deserialize an abstract serializable type
  • Fix - Fixed parsing decimals from a string with an exponent
  • Fix - Fixed losing DateTime.Kind when deserializing ISO date strings
  • Fix - Fixed calling constructors with ref and in parameters
  • Fix - Fixed rare race condition in name table when serializing
  • Fix - Fixed unhelpful exception message when unable to convert JSON value to DateTime
  • Fix - Fixed error when deserializing empty array in DataTable
  • Fix - Fixed deserializing empty string to empty byte array
  • Fix - Fixed blank extension data values with required properties and deserializing with constructor
  • Fix - Fixed ignored values being set in extension data when deserializing
  • Fix - Fixed comparing equal integer and floating point values in JSON Path
  • Fix - Fixed BsonReader when reading multiple content
  • Fix - Fixed setting extension data with existing key
  • Fix - Fixed including array attribute in XML with namespaces when converting JSON to XML
  • Fix - Fixed error when serializing ref struct properties by excluding them from serialization

New in Json.NET 11.0 Release 2 (Mar 25, 2018)

  • Change - Revert DataContractAttribute to not force JSON object serialization (use JsonObjectAttribute instead)
  • Fix - Fixed JPropertyDesciptor.GetValue and SetValue to not throw for non-JObject argument
  • Fix - Fixed JObject ICustomTypeDescriptor.GetProperty to return the current instance
  • Fix - Fixed serializing FileInfo/DirectoryInfo with a JsonConverter in .NET Standard
  • Fix - Fixed serializing F# enums
  • Fix - Fixed serializing types with multiple members of the same name

New in Json.NET 11.0 Release 1 (Feb 19, 2018)

  • New feature - Added netstandard2.0 build
  • New feature - Added generic JsonConverter
  • New feature - Added UnixDateConverter for converting Unix timestaps
  • New feature - Added support for regex operator in JSON Paths
  • New feature - Added JsonObjectAttribute.ItemNullValueHandling
  • New feature - Added JsonObjectContract.ItemNullValueHandling
  • New feature - Improved performance when resolving serialization contracts by using ConcurrentDictionary
  • New feature - Improved performance of JToken.Path with a faster reverse
  • New feature - Improved performance of parsing Int32 JSON integer values
  • New feature - Improved performance of parsing and writing enum names
  • New feature - Added IgnoreIsSpecifiedMembers to DefaultContractResolver
  • New feature - Added IgnoreShouldSerializeMembers to DefaultContractResolver
  • New feature - Added support for reading multiple comma delimited values with JsonReader.SupportMultipleContent
  • New feature - Improved error message when an object is reused with PreserveReferencesHandling
  • New feature - Added IConvertible support to netstandard1.3
  • New feature - Added INotifyPropertyChanging support to netstandard1.3
  • New feature - Optimized internal buffering when writing very large strings
  • New feature - JObject.ContainsKey is now public
  • New feature - Improved the error message when serialized ByRef properties
  • New feature - Improved the error message when serializing FileInfo/DictionaryInfo without ISerializable
  • New feature - Improved the error message when failing conversion in JsonReader.ReadAsInt32 and JsonReader.ReadAsDecimal
  • New feature - Improved the error message when deserializing badly formatted regex strings
  • Change - Types that implement ISerializable but don't have [SerializableAttribute] are not serialized using ISerializable
  • Change - Changed JsonProperty.MemberConverter to obsolete
  • Change - Changed camel casing logic for all caps words to not leave last character capitalized
  • Change - Changed enum serialization in dictionary keys to use EnumMemberAttribute
  • Fix - Fixed converting default datetime in JSON to XML on netstandard1.3
  • Fix - Fixed deserializing ObservableCollection in .NET Core 2.0
  • Fix - Fixed incorrectly allowing static IsSpecified properties
  • Fix - Fixed not preserving trailing zeros when deserializing decimals
  • Fix - Fixed JValue.CompareTo with number and string values
  • Fix - Fixed not erroring when reading undefined for nullable long
  • Fix - Fixed serializing immutable collections when .NET 4.0 or previous Newtonsoft.Json assembly is GACed
  • Fix - Fixed writing null values by XmlNodeConverter and RegexConverter
  • Fix - Fixed deserializing with a TraceWriter when the reader is not at the start
  • Fix - Fixed TraceJsonWriter.WriteValue(object) writing value twice
  • Fix - Fixed deserializing with constructor and readonly collection property
  • Fix - Fixed error when writing unknown null value as JSON
  • Fix - Fixed merging null string values
  • Fix - Fixed missing CancellationToken usages in JsonTextWriter.WriteAsync
  • Fix - Fixed error with JsonSerializer.Populate and comments in JSON array
  • Fix - Fixed error handling when deserializing certain dictionary and lists
  • Fix - Fixed serializing collection that is nullable
  • Fix - Fixed JsonTextReader sync read in async method
  • Fix - Fixed JsonConverter not called when target type is list and token is a string
  • Fix - Fixed serializing a property that is defined in multiple interfaces
  • Fix - Fixed error when deserializing null value into ConcurrentDictionary
  • Fix - Fixed escaping special characters in generated JSON Paths
  • Fix - Fixed reading escaped special characters in JSON Paths
  • Fix - Fixed using extension data with dictionary that explicitly implements Add method
  • Fix - Fixed parsing enum name to exact casing value before falling back to case-insensitive value
  • Fix - Fixed DataContractAttribute not forcing object serialization of classes
  • Fix - Fixed bug when deserializing into existing non-IList collection
  • Fix - Fixed bug when deserializing into existing non-IDictionary collection
  • Fix - Fixed JsonReader.ReadAsInt32 with BigInteger values

New in Json.NET 10.0 Release 3 (Jun 19, 2017)

  • New feature - Added support for deserializing XmlElement, XmlNode, XObject, XNode and XContainer with XmlNodeConverter
  • Change - MinClientVersion 2.12 added to NuGet package to restrict to compatible clients
  • Fix - Fixed JsonSerializer.Binder to not throw an error when binder instance is compatible
  • Fix - Fixed stack overflow when deserializing incomplete JSON to XML
  • Fix - Fixed JSON Path recursive descent queries
  • Fix - Fixed serializing ConcurrentDictionary in .NET Core 2.0
  • Fix - Fixed serializing ConcurrentStack/Queue/Bag
  • Fix - Fixed MemoryTraceWriter thread safety
  • Fix - Fixed JSON Path root filter sometimes not correctly returning root token
  • Fix - Fixed properties with JsonIgnore not being ignored with ItemRequired
  • Fix - Fixed JToken.Load not reading past comment when CommentHandling is Ignore
  • Fix - Fixed JsonReader.ReadAsDecimal with a JValue containing a BigInteger value
  • Fix - Fixed converting JSON values to XML attributes to ignore current culture
  • Fix - Fixed converting JSON byte array data to XML
  • Fix - Fixed reading some types from KeyValuePairConverter incorrectly
  • Fix - Fixed comparing high precision decimal JValues
  • Fix - Fixed JsonWriter.WriteToken(JsonReader) not erroring on incomplete token
  • Fix - Fixed not preventing negative integers with StringEnumConverters.AllowIntegerValues

New in Json.NET 10.0 Release 2 (Apr 5, 2017)

  • Change - .NET 4 portable class library target added back to NuGet package
  • Change - Changed NuGet dependencies to use NETStandard.Library 1.6.1
  • Change - Changed double parsing back to double.TryParse to avoid small floating point precision errors
  • Fix - Fixed binary serialization of JsonException and friends
  • Fix - Fixed JsonLoadSettings.LineInfoHandling not being used correctly when loading JTokens
  • Fix - Fixed serializing IListSource implementations
  • Fix - Fixed handling errors when reading metadata properties during deserialization

New in Json.NET 10.0 Release 1 (Mar 23, 2017)

  • New feature - Added async read support to JsonReader
  • New feature - Added async write support to JsonWriter
  • New feature - Added async support for loading JObject and JArray
  • New feature - Added non-allocating parsing of double and decimal values
  • New feature - Added support for TypeConverters to netstandard1.0+
  • New feature - Added support for BigInteger to netstandard1.3+
  • New feature - Added support for ISerializable to netstandard1.3+
  • New feature - Added support for XmlDocument to netstandard1.3+
  • New feature - Added support for SerializableAttribute and NonSerializedAttribute to netstandard1.3+
  • New feature - Added ISerializationBinder
  • New feature - Added SerializationBinder properties to JsonSerializer and JsonSerializerSettings
  • New feature - Added TypeNameAssemblyFormatHandling
  • New feature - Added TypeNameAssemblyFormatHandling properties to JsonSerializer and JsonSerializerSettings
  • New feature - Added support for root object selector in JSONPath filters
  • New feature - Added support for multiple names in JSONPath scan filter
  • New feature - Added support for any combination of paths and values in JSONPath filter expressions
  • New feature - Added support for extension data names to NamingStrategy
  • New feature - Added ProcessExtensionDataNames flag to NamingStrategy
  • New feature - Added JsonWriter.AutoCompleteOnClose to control whether JSON is auto-completed on JsonWriter.Close
  • New feature - Added JsonReaderException constructor with path, line number, line position
  • New feature - Added JsonWriterException constructor with path
  • New feature - Added JsonReader.SetToken method overload with option not to update position array index
  • New feature - Added support for automatically calling single constructor on immutable structs
  • Change - Removed .NET 4 portable class library target from NuGet package
  • Change - Removed obsolete JsonConverter.GetSchema method
  • Change - Removed obsolete constructor from DefaultContractResolver
  • Change - Removed obsolete async methods from JsonConvert
  • Change - Removed obsolete OnDeserialized, OnDeserializing, OnSerialized, OnSerializing, OnError from JsonContract
  • Change - Removed obsolete JsonDictionaryContract.PropertyNameResolver
  • Change - Removed obsolete ConstructorParameters, OverrideConstructor, ParametrizedConstructor from JsonObjectContract
  • Change - Obsoleted TypeNameAssemblyFormat properties on JsonSerializer and JsonSerializerSettings
  • Change - Obsoleted SerializationBinder
  • Change - Obsoleted Binder properties on JsonSerializer and JsonSerializerSettings
  • Change - Obsoleted FormatterAssemblyStyle in non-full .NET targets
  • Change - Obsoleted Newtonsoft.Json.Bson (moved to new NuGet package)
  • Change - Improved constructor parameter binding on .NET Core and portable builds
  • Change - Improved error when attempting to convert root JSON object property to an XML attribute
  • Change - Changed exception thrown when parsing invalid Unicode escape sequence to JsonReaderException
  • Change - Changed StringEnumConverter.AllowIntegerValues to also reject reading integer strings
  • Change - Changed StringEnumConverter.AllowIntegerValues to also reject writing enum values with no name
  • Fix - Fixed JsonTextReader.ReadAsXXX methods not erroring on missing commas between values
  • Fix - Fixed error when serializing F# lists with F# 4.1+
  • Fix - Fixed StringEnumConverter reading specified enum names that contain a comma
  • Fix - Fixed using a TraceWriter with nullable bytes
  • Fix - Fixed deserializing null Regex values
  • Fix - Fixed deserializing DataTable with error handling
  • Fix - Fixed DynamicReflectionDelegateFactory creating typed value type constructors
  • Fix - Fixed deserializing with type naming and complex nested generic types
  • Fix - Fixed error when converting certain JSON to XML on .NET Core
  • Fix - Fixed error handling skipping reading the next object value
  • Fix - Fixed date XML precision when converting certain JSON to XML on portable builds
  • Fix - Fixed not serializing readonly properties as references if they have corresponding creator parameters
  • Fix - Fixed type name being written with nullable structs and TypeNameHandling.Auto
  • Fix - Fixed deserializing a duplicate dictionary key from a parameterized constructor
  • Fix - Fixed not erroring when deserializing incomplete JSON with a parameterized constructor
  • Fix - Fixed incorrectly parsing scan filter when name is quoted
  • Fix - Fixed return type for SByte and SByteNullable in JToken.ToObject
  • Fix - Fixed deserializing generic only IList types with a constructor override
  • Fix - Fixed null reference error with ReadAsBytes and an empty JSON object
  • Fix - Fixed StringEnumConverter when EnumMember defines members that differ only by case
  • Fix - Fixed serializing protected override properties
  • Fix - Fixed merging null with complex type and MergeNullValueHandling.Ignore
  • Fix - Fixed roundtripping double.MaxValue and float.MaxValue as dictionary keys
  • Fix - Fixed JsonValidatingReader not closing underlying reader
  • Fix - Fixed writing duplicate nulls to trace with TraceJsonWriter.WriteValue for object, Uri, byte[]
  • Fix - Fixed BsonWriter.WriteValue erroring for null Uri or byte[]
  • Fix - Fixed not calling nullable WriteValue overloads in TraceJsonWriter
  • Fix - Fixed serializer not throwing an error when there is a comment followed by additional content when CheckAdditionalContent is true
  • Fix - Fixed JObject/JArray Parse not throwing an error when there is a comment followed by additional content
  • Fix - Fixed deserializing non-string values in some XML nodes
  • Fix - Fixed converting XML to JSON when json:Array and xmlns:json attributes are used directly on the array's element
  • Fix - Fixed error when attempting to populate values into read-only collection after creating object from non-default constructor

New in Json.NET 9.0 Release 1 (Jul 7, 2016)

  • New feature - Added support for .NET Core with netstandard1.0
  • New feature - Added NamingStrategy, CamelCaseNamingStrategy, SnakeCaseNamingStrategy
  • New feature - Added naming strategy properties to JsonObjectAttribute and JsonPropertyAttribute
  • New feature - Updated build to use .NET CLI tools
  • New feature - Improved performance of many operations on large JArrays
  • Fix - Fixed converting XElements without a namespace attribute to JSON
  • Fix - Fixed various bugs in JSONPath equals and not equals comparisions
  • Fix - Fixed JsonTextReader.ReadAsString incorrectly erroring when reading some numbers
  • Fix - Fixed JTokenWriter sometimes losing types when writing JTokens
  • Fix - Fixed JTokenWriter sometimes losing types with JValue.WriteTo
  • Fix - Fixed incorrect check when looking for non-default constructors on collections
  • Fix - Fixed JsonReader.ReadAsDouble with a JValue BigInteger
  • Fix - Fixed converting dollar JSON properties to XML
  • Fix - Fixed dynamic property getter type information
  • Fix - Fixed JsonTextReader reading NaN, Infinity, -Infinity with ReadAsDouble and ReadAsString

New in Json.NET 8.0 Release 3 (Mar 15, 2016)

  • New feature - Added MergeNullValueHandling
  • New feature - Added constructor to StringEnumConverter for setting camelcase from attribute
  • Fix - Fixed JsonTextWriter not getting buffer from buffer pool
  • Fix - Fixed iterating over extension data multiple times
  • Fix - Fixed JSONPath queries combining wildcard with property search
  • Fix - Fixed serializing ISet with the .NET 4 portable assembly
  • Fix - Fixed converting some property names to camel case
  • Fix - Fixed F# serialization in partial trust issue

New in Json.NET 8.0 Release 2 (Mar 15, 2016)

  • New feature - Added ReadAsBoolean to JsonReader
  • Fix - Fixed serializing certain objects with events
  • Fix - Fixed reading booleans as strings
  • Fix - Fixed reading large integers as booleans
  • Fix - Fixed ReadAsBytes with type name handling

New in Json.NET 8.0 Release 1 (Dec 30, 2015)

  • New feature - Added IArrayPool and a setting on JsonTextReader and JsonTextWriter
  • New feature - Added JsonReader.ReadAsDouble
  • New feature - Added JsonLoadSettings and CommentHandling to control loading comments in LINQ to JSON
  • New feature - Added JsonLoadSettings.LineInfoHandling
  • New feature - Added support for JsonConstructorAttribute on list and dictionary collections
  • New feature - Added support for deserializing string to Version
  • New feature - Added ShouldDeserialize to JsonProperty
  • New feature - Added Required.DisallowNull
  • New feature - Added support for converting JSON to XML with invalid XML name chracters
  • New feature - Improved case-insensitive deserialization performance
  • New feature - Improved date parsing performance
  • Change - Changed ReadAsDateTime, ReadAsDateTimeOffset, ReadAsBytes, ReadAsString, ReadAsInt32 on JsonReader from abstract to virtual
  • Change - Changed parsing JArrays to not include comments by default
  • Change - Changed JTokenWriter to use the last property instead of erroring when there are duplicate property names
  • Change - Changed Uri JValues to use OriginalString when written to JSON
  • Change - Changed DateTimeOffset JValues to return TypeCode.Object from IConvertible.GetTypeCode()
  • Fix - Fixed converting JSON metadata array value to XML
  • Fix - Fixed not including line information with some XML conversion errors
  • Fix - Fixed error when writing certain JSON with escaped characters
  • Fix - Fixed PopulateObject error when JSON starts with a comment
  • Fix - Fixed incorrect IJsonLineInfo line position after the first line
  • Fix - Fixed JSONPath when querying against Uri, Guid and Date values
  • Fix - Fixed JsonReader.Path when the path is escaped
  • Fix - Fixed writing JRaw twice when a TraceWriter is set
  • Fix - Fixed getting the wrong value when reading certain large integers
  • Fix - Fixed deserializing DataSet with a null DataTable
  • Fix - Fixed deserializing a null DataSet
  • Fix - Fixed error when serializing F# discriminated unions in Windows Store apps
  • Fix - Fixed error serializing some types when there are conflicting interface properties
  • Fix - Fixed error when settings ReferenceResolver is set to null
  • Fix - Fixed DateTimeZoneHandling not being used when writing DateTime dictionary keys
  • Fix - Fixed bug when converting an integer JValue to a nullable enum
  • Fix - Fixed converting null string JValue to XML
  • Fix - Fixed Mono generic class private field serialization bug
  • Fix - Fixed error when deserializing ignored property with mismatched type
  • Fix - Fixed deserializing to a type when setting JToken extension data
  • Fix - Fixed setting default values onto properties already set in constructor
  • Fix - Fixed casting dynamic JValue to JToken
  • Fix - Fixed serializing non-zero based arrays
  • Fix - Fixed reading 24 hour midnight ISO dates

New in Json.NET 7.0 Release 1 (Jun 24, 2015)

  • New feature - DiscriminatedUnionConverter performance improvements
  • New feature - Added JsonRequiredAttribute
  • New feature - Added JsonSerializerSettings.ReferenceResolverProvider property
  • New feature - Added DefaultContractResolver.ResolveDictionaryKey
  • New feature - Added JsonDictionaryContract.DictionaryKeyResolver
  • New feature - Added support for reading GUID strings as bytes in JsonTextReader
  • New feature - Added EqualityComparer to JsonSerializer
  • Change - Changed reading GUIDs as bytes to only support 00000000-0000-0000-0000-000000000000 format
  • Change - Renamed aspnetcore50 target to dnxcore50
  • Change - Marked JsonSchema as obsolete
  • Change - Marked DefaultContractResolver(bool) as obsolete
  • Change - Marked JsonSerializerSettings.ReferenceResolver as obsolete
  • Change - Marked JsonDictionaryContract.PropertyNameResolver as obsolete
  • Fix - Fixed deserializing empty strings in Hashtables
  • Fix - Fixed incorrect JTokenReader.Path in certain situations
  • Fix - Fixed error when serializing certain objects in medium trust
  • Fix - Fixed deserializing large nullable UInt64 values
  • Fix - Fixed writing large UInt64 JValues
  • Fix - Fixed converting unmatched namespace prefixes in JSON to XML
  • Fix - Fixed IsoDateTimeConverter on DateTime properties with DateTimeFormatHandling.DateTimeOffset
  • Fix - Fixed preserving object references with read only properties
  • Fix - Fixed error when deserializing large JSON integers to XML
  • Fix - Fixed serializing extension data properties with no setter
  • Fix - Fixed serializing discriminated unions with type name or reference tracking enabled
  • Fix - Fixed DataTableConverter not using JsonSerializer settings
  • Fix - Fixed resolving properties from nested interfaces
  • Fix - Fixed deserializing classes derived from ConcurrentDictionary
  • Fix - Fixed passing default values to constructors
  • Fix - Fixed serializing root references from JsonConverters
  • Fix - Fixed empty strings coerced to null not erroring with Required.Always
  • Fix - Fixed invalid Required.Always error with constructor property name casing
  • Fix - Fixed empty string coerce check with Required.Always and constructor

New in Json.NET 6.0 Release 8 (Jan 12, 2015)

  • New feature - Added AttributeProvider to JsonProperty
  • Fix - Fixed serializing and deserializing const fields
  • Fix - Fixed using MetadataTypeAttribute with proxy classes
  • Fix - Fixed bad error message when deserializing unsupported collections

New in Json.NET 6.0 Release 7 (Dec 23, 2014)

  • New feature - Added Annotations to LINQ to JSON
  • New feature - Added DescendantsAndSelf method to JObject and JArray
  • New feature - Added AncestorsAndSelf method to JToken
  • New feature - Added support for tracking references in ISerializable objects
  • New feature - Added CurrentToken to JTokenReader
  • New feature - Added CurrentToken to JTokenWriter
  • New feature - Added WriteToken(JsonToken, object) to JsonWriter
  • Fix - Fixed deserializing null values onto JObject and JArray properties
  • Fix - Fixed error when extension data bag doesn't inherit from Dictionary
  • Fix - Fixed deserializing complex values inside multi-dimensional arrays
  • Fix - Fixed serialization settings not being used when deserializing F# unions
  • Fix - Fixed MetadataTypeAttribute not being found on some platforms
  • Fix - Fixed line breaks in exception messages to use Environment.NewLine
  • Fix - Fixed deserializing certain XElements with comments
  • Fix - Fixed casting JValues with a negative value to a nullable SByte

New in Json.NET 6.0 Release 6 (Oct 25, 2014)

  • New feature - Added support for ASP.NET CoreCLR
  • New feature - Reduced memory allocations when reading and writing JSON
  • New feature - Added support for passing arguments to JsonConverters with JsonConvertAttribute
  • New feature - Added JsonConvert.ToString overload that takes a StringEscapeHandling parameter
  • Change - Omit fields array for F# discriminated union serialization when there are no fields
  • Change - Escape property names in path on readers/writers/tokens when a name contains special characters
  • Change - Provide line numbers for end tokens on JTokenReader
  • Fix - Fixed parsing in SelectToken when the path has an escaped property followed by an unescaped property
  • Fix - Fixed error when deserializing a GUID from certain BSON
  • Fix - Fixed null reference error when using a JEnumerable created with its default constructor
  • Fix - Fixed line breaks in exception messages to use Environment.NewLine
  • Fix - Fixed MetadataTypeAttribute reflection error on ASP.NET CoreCLR
  • Fix - Fixed immutable collections reflection error on ASP.NET CoreCLR

New in Json.NET 6.0 Release 5 (Sep 13, 2014)

  • New feature - Added support for converting string JValues to enums with JToken.ToObject
  • New feature - Added support for creating objects with constructors that have out and ref parameters
  • New feature - Improved .NET 4.0 portable assembly performance by using compiled expression reflection
  • Fix - Fixed error on Mono versions that don't properly support BigInteger
  • Fix - Fixed error in JTokenWriter when disposing after adding a duplicate property
  • Fix - Fixed not handling invalid JSON when deserializing with DataTableConverter
  • Fix - Fixed error when serializing ObservableCollection in Windows 8 Store apps
  • Fix - Fixed not matching some parameters when deserializing via a cosntructor
  • Fix - Fixed potential reflection errors by creating making parameterized creators only when needed
  • Fix - Fixed deserializing F# unions with out of order properties
  • Fix - Fixed camelcase culture bug

New in Json.NET 6.0 Release 4 (Aug 4, 2014)

  • New feature - Added Merge to LINQ to JSON
  • New feature - Added JValue.CreateNull and JValue.CreateUndefined
  • New feature - Added Windows Phone 8.1 support to .NET 4.0 portable assembly
  • New feature - Added OverrideCreator to JsonObjectContract
  • New feature - Added support for overriding the creation of interfaces and abstract types
  • New feature - Added support for reading UUID BSON binary values as a Guid
  • New feature - Added MetadataPropertyHandling.Ignore
  • New feature - Improved performance of KeyValuePairConverter
  • New feature - Improved performance when serializing large XML documents
  • Change - Limited integer parsing size to JavaScript integer size
  • Change - Validated that numbers don't end with an invalid character
  • Fix - Fixed JToken.ReadFrom creating a string value for a comment
  • Fix - Fixed relying on Dictionary order when calling parameterized constructors
  • Fix - Fixed writing new lines to use TextWriter.WriteLine
  • Fix - Fixed deserializing non-generic IReadOnlyCollection implementations
  • Fix - Fixed sending HTTP requests when resolving DTD urls in XmlNodeConverter
  • Fix - Fixed populating ignored properties with DefaultValueHandling.IgnoreAndPopulate
  • Fix - Fixed not throwing JsonReaderException when parsing some invalid numbers
  • Fix - Fixed JsonConvert.PopulateObject not setting JsonReader settings
  • Fix - Fixed deserializing JObjects starting with a comment
  • Fix - Fixed using DateParseHandling and FloatParseHandling with DataTable/DataSet
  • Fix - Fixed serializing static fields
  • Fix - Fixed selecting a property after an empty array with a JSON Path query
  • Fix - Fixed error handling when last value in array or object fails
  • Fix - Fixed directly serializing XmlElements
  • Fix - Fixed incorrect NuGet targets on .NET 4.5 portable assembly
  • Fix - Fixed using JTokenEqualityComparer with JProperties that have no value
  • Fix - Fixed MetadataPropertyHandling.ReadAhead bugs

New in Json.NET 6.0 Release 3 (Apr 28, 2014)

  • New feature - Added MetadataPropertyHandling
  • New feature - Added support for reading MS format JSON dates to ReadAsDateTime
  • New feature - Added support for serializing F# lists, sets and maps
  • New feature - Added support for XML document type
  • Change - Blank XML elements will be written as an empty string instead of null
  • Change - JValue with a null value will be written as null instead of empty string
  • Change - DateFormatString is now used when reading JSON
  • Fix - Fixed deserializing null values with extension data
  • Fix - Fixed converting certain XML namespaces to JSON
  • Fix - Fixed error with whitespace only JSONPath
  • Fix - Fixed property query path that starts with $
  • Fix - Fixed array query path with open brace after $
  • Fix - Fixed parsing certain JSON with comments into a JObject
  • Fix - Fixed bug where matching JSONPath incorrectly raises an error
  • Fix - Fixed non-public base class properties being used instead of child class properties
  • Fix - Fixed hiding generic properties sometimes not being detected
  • Fix - Fixed potential race condition serializing F# objects
  • Fix - Fixed schema divisible sometimes incorrectly validating to false
  • Fix - Fixed not calling virtual ShouldSerialize methods
  • Fix - Fixed invalid cast with DateParseHandling.DateTimeOffset and IsoDateTimeConverter
  • Fix - Fixed StringEnumConverter thread safety
  • Fix - Fixed using FloatParseHandling.Decimal with XmlNodeConverter
  • Fix - Fixed using DateParseHandling.DateTimeOffset with XmlNodeConverter
  • Fix - Fixed type name handling when a property already has a base type assigned

New in Json.NET 6.0 Release 2 (Apr 3, 2014)

  • New feature - Added support for Windows Phone 8.1

New in Json.NET 6.0 Release 1 (Feb 3, 2014)

  • New feature - Added support for JSONPath
  • New feature - Added support for serializing F# discriminated unions
  • New feature - Added support for deserializing nested DataTables and arrays in DataTables
  • New feature - Added support for reading multiple pieces of JSON with a JsonReader
  • New feature - Added AllowIntegerValues setting to StringEnumConverter
  • New feature - Added Decimal and DateTimeOffset constructors to JValue
  • New feature - Added support for reading JSON single line comments
  • New feature - Improved number parsing error messages
  • Change - Changed assembly version to 6.0.0.0
  • Change - .NET 4 Portable build targets MonoTouch and MonoDroid in NuGet package
  • Change - .NET 4 Portable build targets WP8 and SL5 instead of WP7 and SL4
  • Removed - DefaultMemberSearchFlags on DefaultContractResolver is obsolete
  • Removed - SerializeObjectAsync, DeserializeObjectAsync, PopulateObjectAsync on JsonConvert are obsolete
  • Fix - Fixed JObject ICustomTypeDescriptor properties returning incorrect value
  • Fix - Fixed error when casting dynamic base64 string to byte array
  • Fix - Fixed EntityKeyMemberConverter not using property name resolve
  • Fix - Fixed serializing JValues with readonly JsonConverters
  • Fix - Fixed formatting override on SerializeObject methods
  • Fix - Fixed error when wrapping an exception in a JsonConverter
  • Fix - Fixed using extension data with a non-default constructor
  • Fix - Fixed Uri serialization roundtripping with Uri.OriginalString
  • Fix - Fixed TypeNameHandling.Auto with JsonSerializer.Serialize inside a JsonConverter

New in Json.NET 5.0 Release 8 (Oct 17, 2013)

  • Fix - Fixed not writing string quotes when QuoteName is false

New in Json.NET 5.0 Release 7 (Oct 14, 2013)

  • New feature - Added support for Immutable Collections
  • New feature - Added WriteData and ReadData settings to DataExtensionAttribute
  • New feature - Added reference and type name handling support to extension data
  • New feature - Added default value and required support to constructor deserialization
  • Change - Extension data is now written when serializing
  • Fix - Added missing casts to JToken
  • Fix - Fixed parsing large floating point numbers
  • Fix - Fixed not parsing some ISO date timezones
  • Fix - Fixed schema validation of integer value when type was number
  • Fix - Fixed writing of IConvertible values when TypeCode returned was Object
  • Fix - Fixed serializing proxy objects with no default constructor

New in Json.NET 5.0 Release 6 (Oct 14, 2013)

  • New feature - Added serialized/deserialized JSON to verbose tracing
  • New feature - Added support for using type name handling with ISerializable content
  • Fix - Fixed not using default serializer settings with primitive values and JToken.ToObject
  • Fix - Fixed error writing BigIntegers with JsonWriter.WriteToken
  • Fix - Fixed serializing and deserializing flag enums with EnumMember attribute
  • Fix - Fixed error deserializing interfaces with a valid type converter
  • Fix - Fixed error deserializing ISerializable objects that also implement IConvertible
  • Fix - Fixed potential infinite loop when parsing unquoted JSON values

New in Json.NET 5.0 Release 5 (May 8, 2013)

  • New feature - Added global default serialization settings with JsonConvert.DefaultSettings
  • New feature - Added extension data support with JsonExtensionDataAttribute
  • New feature - Added NullValueHandling and DefaultValueHandling support to serializing dynamic types
  • Change - Changed some explicit interface methods on JArray to public to support use with ImpromtuInterface
  • Fix - Fixed deserializing non-ISO formatted date dictionary keys
  • Fix - Fixed values not being set when deserializing with DefaultValueHandling.IgnoreAndPopulate
  • Fix - Fixed deserializing with type named handling and assemblies loaded with Assembly.LoadFrom
  • Fix - Fixed deserializing Regexes when using StringEnumConverter
  • Fix - Fixed serializing and deserializing typed DataSets

New in Json.NET 5.0 Release 4 (Apr 25, 2013)

  • New feature - Added JsonWriter.SetWriteState to support inheritance from JsonWriter implementations
  • Change - Changed .NET 4.5 portable library and WinRT library to use compiled expressions reflection

New in Json.NET 5.0 Release 3 (Apr 15, 2013)

  • Fix - Fixed error serializing non-generic types that implement IEnumerable

New in Json.NET 5.0 Release 2 (Apr 15, 2013)

  • Remove - Removed WP8 library
  • Fix - Fixed required System.Numerics.dll reference by removing BigInteger from external API calls

New in Json.NET 5.0 Release 1 (Apr 15, 2013)

  • New feature - Added .NET 4.5 library
  • New feature - Added portable library targeting .NET 4.5, Win8, WP8
  • New feature - Added Path to JToken
  • New feature - Added BigInteger support
  • New feature - Added IReadOnlyCollection and IReadOnlyDictionary support
  • New feature - Added FloatFormatHandling to JsonWriter/JsonSerializer/JsonSerializerSettings
  • New feature - Added DateFormatString to JsonWriter/JsonSerializer/JsonSerializerSettings
  • New feature - Added support for multiple serialization events and use base type serialization events
  • New feature - Added DeserializeAnonymousType overload with JsonSerializerSettings
  • New feature - Added support for specifying root type when serializing JSON with TypeNameHandling.Auto
  • New feature - Added support for creating lists and dictionaries with an IEnumerable constructor
  • New feature - Added IConvertible support to JValue
  • New feature - Added support for serializing custom IConvertible values
  • New feature - Added support for deserializing IList
  • New feature - Added support for converting byte array JValues to Guid
  • New feature - Added support for deserializing byte arrays to Guid
  • Change - NaN and Infinity floating point values are serialized as strings by default
  • Change - Minor breaking changes to JsonSchema type
  • Change - Upgraded Windows Phone assembly to WP8
  • Change - DateTime IDictionary keys are now serialized in ISO date format
  • Change - DataContractAttribute is no longer inherited to match DataConctractSerializer behavior
  • Change - StringEnumConverter converts empty strings to null for nullable enums
  • Change - Guids serialize to a binary UUID in BSON instead of a string
  • Remove - Removed SL4 library
  • Fix - Fixed JTokenWriter returning a null reference
  • Fix - Fixed static fields to no longer be included with fields serialization
  • Fix - Fixed recursively reading type wrapper objects when deserializing
  • Fix - Fixed incorrect namespace when converting XML to JSON
  • Fix - Fixed poor performance when serializing/deserialize dynamic objects
  • Fix - Fixed StringEnumConverter to throw JsonSerializerException on error
  • Fix - Fixed hidden properties not being serialized

New in Json.NET 4.5 Release 11 (Nov 21, 2012)

  • New feature - Added ITraceWriter, MemoryTraceWriter, DiagnosticsTraceWriter
  • New feature - Added StringEscapeHandling with options to escape HTML and non-ASCII characters
  • New feature - Added non-generic JToken.ToObject methods
  • New feature - Deserialize ISet properties as HashSet
  • New feature - Added implicit conversions for Uri, TimeSpan, Guid
  • New feature - Missing byte, char, Guid, TimeSpan and Uri explicit conversion operators added to JToken
  • New feature - Special case so Version type is correctly deserialized
  • Change - Silverlight and Windows Phone assemblies in NuGet are strong named again
  • Change - Improved CamelCasePropertyNamesContractResolver camel casing property names
  • Change – Explicit JValue conversions are more flexible when converting values
  • Fix - Fixed QuoteChar not being used when writing DateTimes, TimeSpans, Uris and Guids
  • Fix - Fixed JValue constructors for Uri, TimeSpan, Guid assigning incorrect JTokenType
  • Fix - Fixed ReferenceLoopHandling not being used when serializing ISerializable and dynamic values
  • Fix - Fixed potential null reference error when getting attributes
  • Fix - Fixed .NET 2.0 build incorrectly referencing DateTimeOffset

New in Json.NET 4.5 Release 10 (Oct 8, 2012)

  • New feature - Added Portable build to NuGet package
  • New feature - Added GetValue and TryGetValue with StringComparison to JObject
  • Change - Improved duplicate object reference id error message
  • Fix - Fixed error when comparing empty JObjects
  • Fix - Fixed SecAnnotate warnings
  • Fix - Fixed error when comparing DateTime JValue with a DateTimeOffset JValue
  • Fix - Fixed serializer sometimes not using DateParseHandling setting
  • Fix - Fixed error in JsonWriter.WriteToken when writing a DateTimeOffset
  • Fix - Fixed error when serializing emitted classes that have null constructor parameter names
  • Fix - Fixed empty strings not correctly deserializing as null onto nullable properties

New in Json.NET 4.5 Release 9 (Sep 17, 2012)

  • New feature - Added JsonValueConverter
  • New feature - Set a property's DefaultValueHandling to Ignore when EmitDefaultValue from DataMemberAttribute is false
  • Fix - Fixed DefaultValueHandling.Ignore not igoring default values of non-nullable properties
  • Fix - Fixed DefaultValueHandling.Populate error with non-nullable properties
  • Fix - Fixed error when writing JSON for a JProperty with no value
  • Fix - Fixed error when calling ToList on empty JObjects and JArrays
  • Fix - Fixed losing decimal precision when writing decimal JValues

New in Json.NET 4.5 Release 8 (Aug 17, 2012)

  • New feature - Serialize and deserialize multidimensional arrays
  • New feature - Members on dynamic objects with JsonProperty/DataMember will now be included in serialized JSON
  • New feature - LINQ to JSON load methods will read past preceding comments when loading JSON
  • New feature - Improved error handling to return incomplete values upon reaching the end of JSON content
  • Change - Improved performance and memory usage when serializing Unicode characters
  • Change - The serializer now creates objects using GetUninitializedObject when deserializing a Serializable type
  • Fix - Added SecurityTransparent attribute to WinRT build
  • Fix - Fixed infinite loop error caused by error handling upon reaching the end of JSON content

New in Json.NET 4.5 Release 7 (Aug 17, 2012)

  • Fix - Fixed Metro build to pass Windows Application Certification Kit on Windows 8 Release Preview
  • Fix - Fixed Metro build error caused by an anonymous type
  • Fix - Fixed ItemConverter not being used when serializing dictionaries
  • Fix - Fixed an incorrect object being passed to the Error event when serializing dictionaries
  • Fix - Fixed decimal properties not being correctly ignored with DefaultValueHandling

New in Json.NET 4.5 Release 6 (Aug 17, 2012)

  • New feature - Added IgnoreDataMemberAttribute support
  • New feature - Added GetResolvedPropertyName to DefaultContractResolver
  • New feature - Added CheckAdditionalContent to JsonSerializer
  • Change - Metro build now always uses late bound reflection
  • Change - JsonTextReader no longer returns no content after consecutive underlying content read failures
  • Fix - Fixed bad JSON in an array with error handling creating an infinite loop
  • Fix - Fixed deserializing objects with a non-default constructor and reference tracking enabled
  • Fix - Fixed deserializing relative Uris
  • Fix - Fixed constructor name result not being type checked

New in Json.NET 4.5 Release 5 (Aug 17, 2012)

  • New feature - Added ItemIsReference, ItemReferenceLoopHandling, ItemTypeNameHandling, ItemConverterType to JsonPropertyAttribute
  • New feature - Added ItemRequired to JsonObjectAttribute
  • New feature - Added Path to JsonWriterException
  • Change - Improved deserializer call stack memory usage
  • Change - Moved the PDB files out of the NuGet package into a symbols package
  • Fix - Fixed infinite loop from an input error when reading an array and error handling is enabled
  • Fix - Fixed base object error not being handled when deserializing

New in Json.NET 4.5 Release 4 (Apr 25, 2012)

  • New feature - Added Portable Class Library build
  • New feature - Added support for customizing the JsonConverter, type name handling and reference handling of collection items
  • New feature - Added Path to JsonReaderException/JsonSerializationException messages
  • New feature - Added DateParseHandling to JsonReader
  • New feature - Added JsonContainerContract
  • New feature - Added JsonDictionaryAttribute
  • Change - Instances of Exception have been changed to be a more specific exception
  • Fix - Fixed Windows 8 Application Certification tool error by removing AllowPartiallyTrustedCallersAttribute from assembly
  • Fix - Fixed JsonWriters not using DateTimeZoneHandling

New in Json.NET 4.5 Release 3 (Apr 13, 2012)

  • Change - DefaultContractResolver.IgnoreSerializableAttribute is now true by default
  • Fix - Fixed MaxDepth on JsonReader recursively throwing an error
  • Fix - Fixed SerializationBinder.BindToName not being called with full assembly names

New in Json.NET 4.5 Release 2 (Apr 13, 2012)

  • New feature - Added support for the SerializableAttribute and serializing a type's internal fields
  • New feature - Added MaxDepth to JsonReader/JsonSerializer/JsonSerializerSettings
  • New feature - Added support for ignoring properties with the NonSerializableAttribute
  • Fix - Fixed deserializing a null string throwing a NullReferenceException
  • Fix - Fixed JsonTextReader reading from a slow stream
  • Fix - Fixed CultureInfo not being overridden on JsonSerializerProxy
  • Fix - Fixed full trust security check in .NET 2.0 & .NET 3.5
  • Fix - Fixed XmlNodeConverter not turning all attribute properties into attributes
  • Fix - Fixed comparing JObjects to ignore property order
  • Fix - Fixed reading invalid unicode surrogate pairs

New in Json.NET 4.5 Release 1 (Apr 13, 2012)

  • New feature - Windows 8 Metro build
  • New feature - JsonTextReader automatically reads ISO strings as dates
  • New feature - Added DateFormatHandling to control whether dates are written in the MS format or ISO format, with ISO as the default
  • New feature - Added DateTimeZoneHandling to control reading and writing DateTime time zone details
  • New feature - Added async serialize/deserialize methods to JsonConvert
  • New feature - Added Path to JsonReader/JsonWriter/ErrorContext and exceptions with the JSON path of the current position
  • New feature - Added collection type to JsonArrayContract
  • New feature - Added dictionary key type and dictionary value type to JsonDictionaryContract
  • New feature - Added reader/writer specific Formatting, DateFormatHandling and DateTimeZoneHandling to JsonSerializerSettings
  • New feature - Added ReadAsDate and ReadAsString to JsonReader
  • New feature - Added IgnoreSerializableInterface to DefaultContractResolver
  • Change - Dates are now serialized as the ISO format by default
  • Change - The ReadAsXXX methods on JsonReader now return null at the end of an array instead of throwing an error
  • Change - JsonReaders now to set TokenType to JsonToken.None after finishing content
  • Change - Deserializing will fallback to use a private default constructor
  • Change - The error message when deserializing a JSON object/array onto the wrong kind of type is more descriptive
  • Change - Serializing ISerializable types under partial trust now errors to fix potential security issue
  • Fix - Fixed reading scientific notation numbers with no decimal point
  • Fix - Fixed LinqBridge collision error in .NET 2.0 by moving types to a different namespace
  • Fix - Fixed error when deserializing nullable types with no content
  • Fix - Fixed JObject.Keys null reference error when the object has no items
  • Fix - Fixed error handling when failing to parse array content
  • Fix - Fixed error handling when there are missing required properties
  • Fix - Fixed performance issue when building deeply nested JSON to LINQ to JSON objects

New in Json.NET 4.0 Release 8 (Apr 13, 2012)

  • New feature - Added VersionConverter for System.Version
  • New feature - Added a JSON schema IsValid overload that returns a list of error messages
  • Change - NuGet Silverlight/Windows Phone assembies are no longer strong-named
  • Fix - Fixed Json.NET attributes on nullable struct properties not being used
  • Fix - Fixed deserializing nullable enums
  • Fix - Fixed JsonConstructor incorrectly being allowed on properties
  • Fix - Fixed empty string being changed to null when deserializing object properties
  • Fix - Fixed not replacing ignored properties when resolving an object's contract
  • Fix - Fixed JsonReader.ReadAsDateTimeOffset throwing an incorrect error message
  • Fix - Fixed error when converting XML to JSON with a default namespace
  • Fix - Fixed JsonValidatingReader.ReadAsBytes throwing an exception
  • Fix - Fixed a unit test failing because of the running computer’s timezone

New in Json.NET 4.0 Release 7 (Apr 13, 2012)

  • Change - Moved Culture property from JsonTextReader to JsonReader
  • Fix - Fixed circular reference error when serializing nullable struct properties
  • Fix - Fixed JsonReader.ReadAsXXX methods not converting string values

New in Json.NET 4.0 Release 6 (Apr 13, 2012)

  • New feature - Added line number information to deserialization errors
  • New feature - Added ReadAsInt32 to JsonReader
  • New feature - Added BinaryReader/BinaryWriter constructor overloads to BsonReader/BsonWriter
  • Change - JsonTextReader error message when additional JSON content found is more descriptive
  • Fix - Removed unused utility methods
  • Fix - Fixed elusive Intellitrace runtime destabilization error
  • Fix - Fixed internal exception thrown when deserializing Decimal/DateTimeOffset/Byte lists
  • Fix - Fixed potential multi-threading serializing issue
  • Fix - Fixed serializing types that hides a base classes property with a proeprty of the same name
  • Fix - Fixed BsonReader to use BinaryReader instead of base stream
  • Fix - Fixed referencing the NuGet package from Windows Phone 7.1 projects

New in Json.NET 4.0 Release 5 (Apr 13, 2012)

  • Fix - Fixed referencing the NuGet package from Windows Phone 7.1 projects

New in Json.NET 4.0 Release 4 (Apr 13, 2012)

  • Change - JsonTextReader.Culture is now CultureInfo.InvariantCulture by default
  • Change - KeyValurPairConverter no longer cares about the order of the key and value properties
  • Change - Time zone conversions now use new TimeZoneInfo instead of TimeZone
  • Fix - Fixed boolean values sometimes being capitalized when converting to XML
  • Fix - Fixed error when deserializing ConcurrentDictionary
  • Fix - Fixed serializing some Uris returning the incorrect value
  • Fix - Fixed occasional error when converting non-long integer properties to XML
  • Fix - Fixed deserializing byte arrays with type name information
  • Fix - Fixed flag enum items not being correctly camel cased
  • Fix - Fixed JsonValidatingReader validating the first array item twice
  • Fix - Fixed JsonSchema not correctly validating integers as a subset of decimal
  • Fix - Fixed bad BSON when writing long strings of complex UTF8 characters
  • Fix - Fixed error not being raised for additional content in JSON string for JArray.Parse and JObject.Parse
  • Fix - Fixed DataTableConverter including nulls with NullValueHandling.Ignore

New in Json.NET 4.0 Release 3 (Apr 13, 2012)

  • New feature - Improved support for deserializing objects using non-default constructors
  • New feature - JsonConverterAttribute now allowed on constructor parameters
  • New feature - JsonPropertyAttribute now allowed on constructor parameters
  • New feature - Added Serializable attribute to exceptions
  • New feature - JsonObject and JsonProperty attributes can now be placed on an interface and used when serializing implementing objects
  • New feature - Improve TypeNameHandling.Auto to skip adding an unneeded type name for collection interfaces
  • New feature - LINQ to JSON internals rewritten to use lists and dictionaries rather than linked lists
  • New feature - Added support for deserializing to readonly collections and dictionaries on classes with non-default constructors
  • New feature - Added serialization constructors to all Exceptions
  • New feature - Added support for serialization event attributes on base classes
  • New feature - Added support for BindToName on SerializationBinder
  • New feature - Missing JSON errors can now be handled using JsonSerializer error handling
  • New feature - Added Populate and IgnoreAndPopulate options to DefaultValueHandling for automatically populating default values during deserialization
  • New feature - Added support for setting readonly fields when marked up with JsonPropertyAttribute
  • New feature - Added Order to JsonPropertyAttribute to override the order of serialized JSON
  • New feature - Added Culture to JsonTextReader to use when converting values from JSON text
  • New feature - Added support for reading byte arrays from JSON integer arrays
  • New feature - Added support for deserializing IDictionary properties
  • New feature - Added ToObject to JToken for deserializing LINQ to JSON objects to a .NET object
  • New feature - Added support for Guid, TimeSpan and Uri to LINQ to JSON
  • Change - Changed WriteEndObject, WriteEndArray, WriteEndConstructor on JsonWriter to be virtual
  • Change - Moved JPropertyDescriptor to Newtonsoft.Json.Linq namespace
  • Change - Additional content after the $ref property now ignored when reading schema references
  • Change - Changed JToken.Children to return an empty iterator rather than erroring
  • Change - Changed the assembly file names to all be Newtonsoft.Json.dll to fix NuGet referencing
  • Change - Changed $id and $ref properties to allow null
  • Fix - Changed .NET 2.0 version to use LinqBridge source code rather than ilmerge to fix error
  • Fix - Fixed deserializing to IEnumerable properties
  • Fix - Fixed DataTable and DataColumn names not being modified by CamelCasePropertyNamesContractResolver
  • Fix - Fixed JObject loading JSON with comments
  • Fix - Fixed error when using a Specified property with no setter
  • Fix - Fixed transient constructor error on Windows Phone 7
  • Fix - Fixed deserializing null values into nullable generic dictionaries
  • Fix - Fixed potential casting error when writing JSON using a JsonReader
  • Fix - Fixed converting emtpy XML elements with an array attribute not writing other attributes
  • Fix - Fixed deserializing null values into DataTables
  • Fix - Fixed error when deserializing readonly IEnumerable array properties
  • Fix - Fixed not including type name for byte[] values
  • Fix - Fixed BsonWriter failing silently when writing values outside of an Object or Array
  • Fix - Fixed serializer attempting to use dynamic code generation in partial trust
  • Fix - Fixed serializing objects with DataContract and DataMember attributes on base classes

New in Json.NET 4.0 Release 2 (Apr 23, 2011)

  • New feature - Added commonly used primitive value operations to dynamic JValue
  • New feature - Added IComparable to JValue
  • New feature - Added JsonConstructorAttribute to explicitly define which constructor to use during deserialization
  • New feature - Added IFormattable to JValue
  • New feature - Added Load and Parse helper methods to JToken
  • New feature - Added ExpandoObjectConverter that deserializes to primitive values rather than LINQ to JSON objects for ExpandObjects
  • New feature - Added EnumMemberAttribute support to StringEnumConverter
  • New feature - Added CloseInput/CloseOutput to JsonReader/JsonWriter to control whether the underlying stream is closed. Default to true
  • Change - JValue ToString now calls ToString on the internal value
  • Change - NuGet spec file includes client profiles
  • Change - BsonReader/BsonWriter close the underlying stream by default when closed
  • Change - CamelCasePropertyNamesContractResolver updates dictionary and dynamic property names
  • Fix – DefaultValueHandling no longer includes a property when the default value is the same value but a different type
  • Fix – Objects created with paramatized constructors fixed to not set properties that aren't in JSON
  • Fix – Fixed comments in JSON sometimes causing errors when deserializing
  • Fix – Error when reflecting over type that has multiple index properties inherited fixed
  • Fix – Error when reusing JsonSerializer with preserve references enabled fixed
  • Fix – Poor error message when dynamic type cannot be created during deserialization fixed
  • Fix – Error when setting a null value on a dynamic type during deserialization fixed
  • Fix – JsonTextReader.ReadAsDecimal not attempting to convert string values to decimal fixed
  • Fix – Duplicate type name within an assembly error fixed
  • Fix – Deserializing a DataTable property fixed
  • Fix – Code emit error when deserializing interfaces in certain situations fixed
  • Fix – Performance issues when deserializing with partial type names fixed
  • Fix – Deserializing some decimal values on classes with non-default constructors fixed

New in Json.NET 3.5 Beta 3 (Mar 26, 2009)

  • New feature - Added IMappingResolver interface and DefaultMappingResolver class. IMappingResolver property added to JsonSerializer, JsonSerializerSettings, JsonSchemaGenerator
  • New feature - Added CamelCaseMappingResolver
  • New feature - Added DeserializeNode overload to JsonConvert that allows a root element to be added to the XML
  • New feature - Added support for deserializing to IEnumerable, ICollection, IList and IDictionary members
  • New feature – Deserializer will now populate an object’s members with unused values after creating an object from a non-default constructor
  • New feature - Deserializer now attempts a case insensitive match to a member if the exact case match fails
  • New feature - Added a ToString(Formatting, JsonConverters[]) overload to JToken
  • New feature - Added AddAfterSelf, AddBeforeSelf methods to JToken
  • Change - JsonSerializer now ignores missing members by default
  • Fix - Made the error message when attempting to deserialize to an interface or abstract class clearer
  • Fix - Fixed the whitespace issues when writing a raw JValue token
  • Fix - XmlNodeConverter now handles nested arrays when converting JSON to XML
  • Fix - Ensure JavaScriptDateTimeConverter converts nullable DateTime members
  • Fix - Fix possible thread safety issues by adding double check locking to static reflection cache

New in Json.NET 3.5 Beta 2 (Mar 25, 2009)

  • New feature - Added JSON Schema implementation
  • New feature - Added IJsonLineInfo. Implemented by JsonTextReader, JsonTokenReader, JsonValidatingReader, JToken
  • New feature - Added line details to JsonTextReader exception messages and JsonValidatingReader errors
  • New feature - Added JsonContainerAttribute with Id, Title and Description members. JsonObject and JsonArray inherit from this attribute
  • New feature - Added JsonArrayAttribute. Has flag to control whether array can contain null items
  • New feature - Added IsRequired to JsonProperty
  • New feature - Added Load(JsonReader) to JProperty, JConstructor
  • New feature - Added the ability for JsonTokenWriter to write individual values as well as arrays and objects
  • New feature - Added CreateReader to JToken
  • New feature - Added FromObject to JToken
  • New feature - Added ReadFrom to JToken
  • Change - Renamed JavaScriptConvert to JsonConvert
  • Change - Value on JObject supports getting nullable values
  • Change - Type values now serialize and deserialize to the type name string
  • Change - GetSerializableMembers has been removed and replaced with GetMemberMappings on JsonSerializer
  • Fix - JsonConvert now always write a floating point number with a decimal place
  • Fix - JsonSerializer now correctly skips missing members
  • Fix - JsonWriter now allows objects and arrays to be written in a constructor
  • Fix - QuoteChar not getting set when parsing property name
  • Fix - JProperty now correctly loads content from a collection