2.3.5.3 - bug fix BuildLookup() 2.3.5.2 - bug fix endless loop parsing recursive types 2.3.5.1 - added nuget package for nunit to the test project - code cleanup 2.3.5 - optimized the parser for skipping when type provided and $types not in json 2.3.3 - removed racist term from code - add fastSJON.DataMember attribute for .net v2+ 2.3.2 - added JSONParameters.FullyQualifiedDataSetSchema for edge case datasets - badlist type checking in DataTable - fix for null values for objects (thanks to ADLER1) 2.3.1 - optimized bad list checking - fixed dotnet core project to use AssemblyInfo.cs 2.3.0 - bug fix reading a negative number in int[] - bug fix object equality hash code checking with JSONParameters.OverrideObjectHashCodeChecking (thanks to MTantos1) - added JSONParameters.BadListTypeChecking default true for friday 13th json attack checking 2.2.5 - bug fix ShowReadOnlyProperties and fields - bug fix ToJSON() and changing ShowReadOnlyProperties per call on a type 2.2.4 - optimized CreateLong() and CreateInteger() (thanks to djmarcus) 2.2.3.1 - made JSONParameters.MakeCopy() public 2.2.3 - bug fix deserialize Dictionary> without extensions (thanks to Ondrej Medek) - bug fix deserialize Dictionary without extensions 2.2.2 - thread safe json formatter (thanks to Ondrej Medek) 2.2.1 - added JSONParameters.AutoConvertStringToNumbers to control the auto conversion, if false you will get an exception - fixed file names in nuget package on linux 2.2.0 - fixed json parser to create a decimal number if the string does not have an exponent - fixed fast creating lists without capacity constructor - unified Reflection.cs - * breaking runtime change if using RegisterCustomType() * 2.1.36 - optimization tweaks ~30% boost on deserialize - changed internal tolower to tolowerinvariant - internal json parser fixed char pointer - internal reflection struct to class 2.1.35 - moved .net 3.5 project to own folder to mitigate conflicting obj builds 2.1.34 - ability to create internal/private objects (removed the public access restriction on classes) 2.1.33 - case insensitive enum (thanks to AgentFire) - auto covert to boolean (number >0 , string : 1, true, yes, on) - fixed .net 3.5 project output framework version 2.1.32 - Non public setter / readonly property support (thanks to rbeurskens) - unify reflection.cs with fastBinaryJSON 2.1.31 - auto convert to string on deserialize if the object property is string and the json value is not - fixed side effect of changing JSONParameters.UsingGlobalTypes inside classes and affecting the original value - fixed deserialize nested Dictionary without extensions with generic ToObject<> 2.1.29 - added JSONParameters.AllowNonQuotedKeys for non standard javascript like json - signed .net core and standard assembly 2.1.28 - bug fix deserializing array of objects with type information - test for above - support for .net core and netstandard2.0 via separate project 2.1.27 - bug fix case in DataMember attributes (thanks to Elvis Lam) - added ToObject(string json, Type type, JSONParameters par) - bug fix .net v2.0+ build with conditional compilation 2.1.26 - bug fix support for byte[] in DataTable columns (thanks to HKatura) - added JSONParameters.FormatterIndentSpaces - bug fix edge cases for float/decimal/double/long/ulong/int/uint MinValue, MaxValue, NegativeInfinity, PositiveInfinity, Epsilon, NaN (thanks to qaqz111) 2.1.25 - support for DataMember[Name] attribute - handling \0 in strings as \u0000 even without extensions 2.1.24 - Support ISO8601 formatted DateTimeOffset (thanks to Scott McKay) - security warning for $type usage 2.1.23 - added support for TimeSpan (equates to a long) - added auto convert string numbers "42" -> 42 - added more to Howto.md 2.1.22 - bug fix ToObject>() with extensions off (thanks to chunlizh) - added Howto.md (work in progress) - renamed solution file 2.1.21 - bug fix enumerating dynamic objects 2.1.20 - bug fix nested dictionary D<,D<,>> 2.1.19 - added ToNiceJSON(obj) with default parameters - added support for interface object properties (thanks to DrDeadCrash) 2.1.18 - bug fix read only properties to output - added test for readonly properties - sync reflection.cs with fastBinaryJSON - added NonSerialized to the list of ignore default attributes 2.1.17 - add support for skipping line comments in json string on read (e.g. //comment) - fixed broken custom type handler (sorry to all) - added test for custom types - auto convert string to int or long if the receiving type expects one - auto convert byte[] if needed (thanks to Enrico Padovani) - bug fix DateTime in anonymous type InvalidProgramException (thanks to skottmckay) - ExpandoObject work correctly - JSON.ToObject() works correctly - support for double.NaN float.NaN with test - property/field/key names with quotes etc. handled correctly - fixed byte[] in Dictionary values with test - add twitter data test - support for DateTimeOffset 2.1.16 - bug fix ToObject>>() (thanks to sleiN13) - bug fix CreateStringKeyDictionary() (thanks to John Earnshaw) - type access optimizations - test restructuring 2.1.15 - usings cleanup - bug fix : edge case CreateArray() bt is null -> default to typeof(object) 2.1.14 - dynamic object processing enhancements (thanks to Justin Dearing) 2.1.13 - code speedups (thanks to wmjordan) 2.1.12 - support for multidimensional arrays (thanks to wmjordan) 2.1.11 - bug fix public static properties 2.1.10 - bug fix byte[] keys with Dictionary (thanks to Stanislav Lukeš) 2.1.9 - JSONParameters.SerializeNullValues = false handles Dictionary and NameValueCollection correctly 2.1.8 - bug fix serializing static fields and properties - skip indexer properties on objects (thanks to scymen) - JSONParameters.SerializeToLowerCaseNames also handles Dictionary and NameValueCollection 2.1.7 - strict ISO date format compliance with a T in the output (IE, firefox javascript engines complained) - added JSONParameters.SerializeToLowerCaseNames for javascript interop - JSONParameters.IgnoreCaseOnDeserialize is depricated and not needed anymore - added tests for lowercase output - internal code cleanup 2.1.6 - fix for release build in net4 (thanks to Craig Minihan) - support for ExpandoObject serialize in net4 (thanks to Craig Minihan) - added JSONParameters.SerializerMaxDepth to control the max depth to go down to - added JSONParameters.InlineCircularReferences to disable the $i feature and inline already seen objects - JSONParameters.UseExtensions = false disables circular references also 2.1.5 - added direct nullable convert ToObject i.e. int? long? etc. (thanks to goroth) - bug fix deserialize private set and no set properties - added ReadonlyTest() test for the above 2.1.4 - bug fix deserializing a struct property in a class 2.1.3 - added support for DateTime milliseconds - added TestMilliseconds() test 2.1.2 - bug fix circular references 2.1.1 - bug fix obj.List> and obj.List - added code intellisense help for methods - added ClearReflectionCache() to reset all internal structures 2.1.0 - *breaking change* : removed the JSON.Instance singleton - moved all the state from JSON to the Reflection singleton - all of the JSON interface is now static - added JSONParameters overloads for ToObject() - support for circular referenced object structures - added circular test - fixed the .net35 project file to compile correctly 2.0.28.1 - added ParametricConstructorOverride parameter to control non default constructors - fixed failing StructTest when run with others - added create object performance test 2.0.28 - removed ToCharArray in the parser for less memory usage (Thanks to Simon Hewitt) - fixed create enum from value and string - replaced safedictionary with dictionary for some of the internals so no locks on read - added custom ignore attributes (Thanks to Jared Thirsk) - using IsDefined instead of GetCustomAttributes (Thanks to Andrew Rissing) - moved all the reflection code out of JSON.cs - now you can deserialize non default constructor classes (Thanks to Anton Afanasyev) 2.0.27 - added UseValuesOfEnums parameter to control enum output - fixed working with const properties and fields (i.e ignored) 2.0.26 - bug fix objects in array dynamic types e.g. [1,2,{"prop":90}] - added support for special collections : StringDictionary, NameValueCollection 2.0.25 - bug fix dynamic json and root arrays e.g. [1,2,3,4] 2.0.24 - access inner property in arrays in dynamic types e.g. d.arr[1].a (Thanks to Greg Ryjikh) - add JSONParameters.KVStyleStringDictionary to control string key dictionary output 2.0.23 - JSONParameters.IgnoreCaseOnDeserialize now works - added ignore case test 2.0.22 - added .net 3.5 project - now compiling to 'output' directory - added signed assembly - version numbers will stay at 2.0.0.0 for drop in compatibility - file version will reflect the build number - bug fix deserializing to dictionaries instead of dataset when type is not defined 2.0.21 - fixed edge case tailing '\' in formatter - code cleanup formatter 2.0.20 - fixed hastable deserialize - added test for hashtable - added abstract class test - changed list of getters to array ~3% performance gain - removed unused code 2.0.19 - fix dynamic objects and lists - fix deserialize Dictionary> and Dictionary - added tests for dictionary with lists 2.0.18 - edge case empty array deserialize "[]" -> T[] - code cleanup - fixed serialize readonly properties 2.0.17 - added serialization of static fields and properties - added dynamic object support and test 2.0.16 - bug fix formatter - added test for formatter 2.0.15 - removed CUSTOMTYPE directives from code - fix for writing enumerable object 2.0.14 - Optimizations done by Sean Cooper - using Stopwatch instead of DateTime for timings - myPropInfo using enum instead of boolean - using switch instead of linked if statements - parsing DateTime optimized - StringBuilder using single char output instead of strings for \" chars etc 2.0.13 - bug fix comma edge cases with nulls - unified DynamicMethod calls with SilverLight4 code - test cases for silverlight 2.0.12 - bug fix nested generic types (thanks to Zambiorix) - bug fix comma edge cases with nulls 2.0.11 - bug fix single char number json - added UseEscapedUnicode parameter for controlling string output in \uxxxx for unicode/utf8 format - bug fix null and generic ToObject<>() - bug fix List<> of custom types 2.0.10 - added MonoDroid project 2.0.9 - added support for root level DataSet and DataTable deserialize (you have to do ToObject(...) ) - added dataset tests 2.0.8 - bug fix big number conversions - * breaking change Parse will return longs and doubles instead of longs and decimals - ToObject on value types will auto convert the data (e.g ToObject() ) 2.0.7 - bug fix missing comma with single property and extension enabled 2.0.6 - singleton uses [ThreadStatic] for concurrency (thanks to Philip Jander) - bug fix extra comma in the output when only 1 property in the object (thanks to Philip Jander) 2.0.5 - fixed number parsing for invariant format - added a test for German locale number testing (,. problems) 2.0.4 - fixed null objects -> returns "null" - added sealed keyword to classes - bug fix SerializeNullValues=false and an extra comma at the end - UseExtensions=false will disable global types also - fixed parameters setting for Parse() 2.0.3 - readonly property checking on deserialize (thanks to Slava Pocheptsov) - bug fix deserialize nested types with unit test (thanks to Slava Pocheptsov) - fix the silverlight4 project build (silverlight5 is not supported) 2.0.2 - bug fix $types and arrays 2.0.1 - bug fix preserve internal objects when FillObject called - changed ArrayList to List and consolidated silverlight code - added more tests - speed increase when using global types ($types) 2.0.0 - added unit tests - deserialize root level arrays (int[] etc.) - deserialize root level value types (int,long,decimal,string) - deserialize ToObject< Dictionary > - deserialize ToObject< List > - * breaking change in Parse , numbers are returned as decimals and longs not strings 1.9.9.1 - bug fix reflection code 1.9.9 - bug fix char and string ToString - refactored reflection code into Reflection class - added support for top level struct object serialize/deserialize 1.9.8.1 - spelling mistake on JSONParameters - bug fix Parameter initialization 1.9.8 - added DeepCopy(obj) and DeepCopy(obj) - refactored code to JSONParameters and removed the JSON overloads - added support to serialize anonymous types (deserialize is not possible at the moment) - bug fix $types output with non object root 1.9.7 - removed indent logic from serializer - added Beautify(json) method to JSON - added locks on SafeDictionary - added FillObject(obj,json) for filling an existing object 1.9.6.1 - bug fix SilverLight version to support GlobalTypes 1.9.6 - added a $types extension for global type definitions which reduce the size of the output json - added UsingGlobalTypes config for controling the above (default = true) - bug fix datatable commas between arrays and table definitions (less lint complaining) - string key dictionaries are serialized optimally now (not K V format) 1.9.5 - bug fix datatable schema serialize & deserialize 1.9.4 - ShowReadOnlyProperties added for exporting readonly properties (default = false) - if datetime value ends in "Z" then automatic UTC time calculated - if using UTC datetime the output end in a "Z" (standards compliant) 1.9.3 - UTC datetime handling via UseUTCDateTime = true property - added support for enum as key in dictionary 1.9.2 - fixed to fullname instaed of name when searching for types in property cache (namespace1.myclass , namespace2.myclass are now different) 1.9.1 - fixed SerializeNullValues = false bug 1.9 - added support for public field serialize and deserialize 1.8 - SilverLight4 support merged into source - RegisterCustomType() for custom serializer 1.7.7 - datatable support - indented output - bug fix 1.7.6 - xmlignore on properties handled - date output fix -> 0000 format - special case optimized dictionary output {"prop":"value",...} insteadof [{"k":"prop","v":"value"},...] - override serialize nulls to output 1.7.5 - serialize without extensions - added overloaded methods - deserialize without extensions 1.7 - bug fix dictionary deserialize - special case List - int, long parse 4x faster - unicode string optimize - changetype optimize - dictionary optimize - deserialize embeded class e.g. Sales.Customer - safedictionary check before add - handles object ReturnEntity = new object[] { object1, object2 } - handles object ReturnEntity = Guid, Dataset, valuetype 1.6 - guid 2x faster - dataset 40% smaller - dataset deserialize 35% faster - dataset serialize 11% faster - single dimension valuetype arrays supported 1.5 - 53% speed boost deserializer without dataset - 21% speed boost deserializer with dataset - Enum parse fix 1.4 - ~3% speed boost to serializer - 50% speed boost to deserializer - 46% speed boost to dataset serializer - 26% speed boost to dataset deserializer 1.3 - removed unused code 786 lines now - property comma fix 1.2 - culture info - system.dbnull -> null - skips readonly properties 1.1 - 26% performance boost on dataset