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