forked from mgholam/fastJSON
-
Notifications
You must be signed in to change notification settings - Fork 0
/
history.txt
517 lines (407 loc) · 16.3 KB
/
history.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
2.4.0.5
- bug fix UseUTCDateTime = true when deserializing dates
2.4.0.4
- bug fix skipping serializing static property in structs
2.4.0.3
- bug fix edge case for deserialize
- bug fix datamember use
2.4.0.2
- numbers > 32 chars treated as double
2.4.0.1
- bug fix json5 line break
- support for json5 +NaN -NaN
2.4.0
- dotnet 5.0 build
- debug and release configs working
- json5 support
(nan, infinity, leading/trailing decimal, trailing comma, string escapes, single/double quotes
positive/negative prefix, comments, hex numbers, multi line string breaks)
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<int,List<X>> without extensions (thanks to Ondrej Medek)
- bug fix deserialize Dictionary<int,X[]> 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<Dictionary<string,List<T>>() 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<T[]>() 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<Dictionary<string, List<X>>>() (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<x?> 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<List<object>> and obj.List<object[]>
- 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<T, List<V>> and Dictionary<T, V[]>
- 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<DataSet>(...) )
- 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<deciaml>() )
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<object> 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<T,V> >
- deserialize ToObject< List<T> >
- * 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<T>(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<string,string> 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<object[]>
- 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