Jesse Wilson
7a7bbf754c
Use JsonReader internally rather than JsonParserJavacc.
...
For raw parsing (ie. new JsonParser().parse()) the parse time has improved substantially. For example, JsonParserJavacc parsed my 48KiB buzz feed in 4.8ms. JsonReader parses the same feed in 0.9ms.
http://microbenchmarks.appspot.com/run/limpbizkit@gmail.com/com.google.gson.GsonBenchmark/430001
2010-08-27 05:59:18 +00:00
Jesse Wilson
765a9f1ecd
Brand new classes for streaming JSON efficiently.
...
Notable features:
- Efficiency. The parser is faster than the current javacc parser. It's also faster than popular libraries for JSON streaming.
- Toggle lenient/strict
- Toggle pretty/compact
- Friendly error messages on bad JSON
- GSON-quality Javadoc
- Non-execute prefix handling
This doesn't wire JsonReader up into Gson just yet. That's coming soon...
2010-08-26 08:44:02 +00:00
Joel Leitch
3fc4bcc061
Minor test fixes. Explicitly fail test if the expected exception was not thrown.
2010-08-21 03:19:17 +00:00
Inderjeet Singh
de0f8da151
replaced unchecked suppressed warnings token with more specific rawtypes.
...
removed unused imports.
2010-08-20 16:27:46 +00:00
Inderjeet Singh
ed838ec104
replaced unchecked suppressed warnings token with more specific rawtypes
2010-08-20 16:20:37 +00:00
Jesse Wilson
bc5b836103
Test demonstrating a bug reported in issue 182, wherein malformed JSON is emitted when an property name contains a double-quote.
2010-08-20 05:45:51 +00:00
Jesse Wilson
8b5cc3256d
Test demonstrating a bug reported in issue 178, wherein malformed JSON is emitted when a map key contains a double-quote.
2010-08-20 05:43:17 +00:00
Inderjeet Singh
dc60cb1931
Made FieldNamingStrategy2 is package protected class.
...
Made type hierarchy adapter registration package protected.
Marked some of the classes final.
Minor changes in the performance tests.
2010-08-19 00:10:42 +00:00
Joel Leitch
89c18452ae
Ensure date with pattern is not override with the "default" date type adapter when a custom JsonSerializer/JsonDeserializer is registered.
2010-08-18 23:58:52 +00:00
Inderjeet Singh
c3f61ee5ad
Added a test to reproduce bug described in http://groups.google.com/group/google-gson/browse_thread/thread/9591c539e3c19d59
...
Seems like an invalid bug report as Gson can deserialize primitive values in Integer fields.
2010-07-19 23:32:24 +00:00
Inderjeet Singh
b2af57d288
Added checks to ensure that typeHierarchyAdapter being registered doesn't hide a previously existing one.
...
Fixed a bug where registerIfAbsent was adding type adapters in the reverse order of priority.
Added toString() to Pair.
2010-06-24 21:51:18 +00:00
Inderjeet Singh
8aedbc84db
Added a new GsonBuilder option to register a type adapter for a type hierarchy instead of a single type.
...
Upgraded Gson version to 1.5 since a new API call is being added.
2010-06-21 23:26:06 +00:00
Joel Leitch
9cd72ca7fb
Add new tests with SerializedName annotation that contains a space in the name.
2010-05-28 02:13:11 +00:00
Joel Leitch
ba0154867d
Add support to allow spaces in the JSON field name.
2010-05-26 17:40:19 +00:00
Joel Leitch
389f918bb8
Add new performance test for large objects (many fields).
2010-05-19 21:29:58 +00:00
Joel Leitch
9c7bfc677a
Allow cache size to be configured.
2010-05-19 20:47:27 +00:00
Joel Leitch
bf2a0e4e0b
Adding tests to ensure the adapter from the old to new naming strategy is working properly.
2010-01-10 03:27:59 +00:00
Joel Leitch
9816426bba
Add new Cache interface and LRU Cache implementation to cache field annotations per "Class" (rather than per instance). This results in a significant speed-up (approx. 3X) when serializing/deserializing the same classes over and over again.
2010-01-10 00:32:21 +00:00
Joel Leitch
e3af076ff2
Deprecate the FieldNamingStrategy interface and replace it with FieldNamingStrategy2. This is the first step to help make it easy to cache field annotations across all instances of a class, etc.
2010-01-09 22:43:27 +00:00
Inderjeet Singh
7079799890
Fixed issue 167 by adding support for TreeSet deserialization. Added tests for serialization/deserialization of treesets.
2010-01-08 19:14:42 +00:00
Inderjeet Singh
058f7344db
Revised the setup for date/time tests to use PST time-zone. This fixes bug 184 by ensuring that tests are run in PST time-zone.
2010-01-08 18:53:39 +00:00
Inderjeet Singh
15fa10943c
Fixed serializers and deserializers for java.sql Date and Time to ensure that Date does't serialize time, and time does't serialize the date portion.
2009-12-04 18:15:00 +00:00
Inderjeet Singh
ebf24fbda5
Fixed issue 134 by adding support for java.sql Date and Timestamp classses.
2009-12-04 01:21:13 +00:00
Inderjeet Singh
fff9147988
Added some tests to measure serialization and deserialization performance of Gson based on the discussion in http://groups.google.com/group/google-gson/browse_thread/thread/7a50b17a390dfaeb
...
Surprising just marking a field as exposed halves the performance.
2009-10-20 00:04:34 +00:00
Joel Leitch
102f8b3a71
Adding a few more assert to the InstanceCreatorTest to ensure that the default values are set for sub class fields.
2009-10-09 21:23:51 +00:00
Joel Leitch
d87d3f807f
Added functional tests for user defined exclusion strategy.
...
Added test to ensure empty/null properties are added for the JsonObject.
2009-10-09 21:12:07 +00:00
Inderjeet Singh
bc1e5c5c99
Ensured that custom deserializer is invoked with actual type returned for field values.
...
Fixed a bug where a top-level object was constructed with default values even when the custom deserializer tried to set it to null.
2009-10-09 19:41:33 +00:00
Inderjeet Singh
338758a0d3
implemented support for deserialization to deserialize to more specific type if an instance creator returns a sub-class.
2009-10-09 18:16:16 +00:00
Joel Leitch
de6af4411b
Minor fixes.
2009-10-09 15:43:50 +00:00
Inderjeet Singh
60ef777efc
Fixed custom serilization invocation to correctly handle nulls returned by custom serializer.
2009-10-09 15:28:05 +00:00
Inderjeet Singh
e37add7836
Implemented some code review comments from r482
2009-10-09 01:35:45 +00:00
Inderjeet Singh
2bddd575b3
Code review changes from r476
2009-10-08 23:23:52 +00:00
Joel Leitch
dc5922e703
Addresses comments in r481 (except for the interface change....leaving FieldAttributes as a class).
...
Change the exclusion order in ObjectNavigator to exclude a top-level class (if exclusion strategy suggests class should be skipped) even if it is marked with a custom (de)serializer.
2009-10-08 20:51:40 +00:00
Inderjeet Singh
e9c156b016
Added inheritance tests using toJson() method as well.
2009-10-08 19:32:15 +00:00
Inderjeet Singh
b634804533
Ensured that a base class custom serializer is run when the type is specified explicitly during serialization. For all other situations, ensured that the actual type of the object is taken into consideration while serializing. First a custom handler corresponding to the actual type is looked up, then a custom handler for the specified type.
...
Created some serialization specific tests regarding custom serializers. Revised some tests to use toJsonTree for better asserts instead of string matching.
2009-10-08 19:28:53 +00:00
Joel Leitch
839b0c2f94
Refactored exclusion strategies so that they can easily be exposed as part of the public API.
2009-10-07 09:23:14 +00:00
Joel Leitch
c892738fbb
Re-enabling the ' (apostrophe) escaping with valid JSON escaping.
2009-10-07 03:48:29 +00:00
Inderjeet Singh
536a968b32
Disabled escaping of single quote since it is valid for JSON (though invalid for JavaScript).
...
Added null checks in contexts since the custom type adapter can pass nulls.
2009-10-06 17:10:52 +00:00
Inderjeet Singh
d416361ac5
Added a test to ensure Gson can use JSON fields to store type information.
2009-10-06 04:25:28 +00:00
Inderjeet Singh
ae85e6cce6
A test to ensure that null values override default values when nulls are present in input Json during deserialization.
2009-10-06 01:55:44 +00:00
Inderjeet Singh
1da3ef9891
Ensured that a custom handler is not visited during deserialization.
...
Ensured that JsonTreeNavigator can handle null values as children of JsonObject. This is now possible since Gson exposes toJson(JsonElement) method to which the user can pass a JsonElement with null values.
2009-10-06 01:15:28 +00:00
Inderjeet Singh
ff74224815
Revised equals and hashcode of ObjectTypePair to ensure reference equality of object instead of value equality. Improved JavaDocs for various 1.4 API methods.
2009-10-05 18:17:52 +00:00
Inderjeet Singh
2716d96516
Revised ancestor stack to use both object and type
2009-10-03 04:45:12 +00:00
Joel Leitch
fbf834c3f6
Implemented suggests from r469 code review.
2009-10-02 20:33:37 +00:00
Joel Leitch
b28864eaa0
Remove unused import.
2009-10-02 20:22:43 +00:00
Joel Leitch
912db55ba6
Added test for hasNext on JsonStreamParser.
2009-10-02 19:39:09 +00:00
Joel Leitch
0c2106f2ff
Adding test for new field naming policies from r456 code review.
2009-10-02 19:12:15 +00:00
Inderjeet Singh
40ca8b0537
Added copyright header per code review suggestion from r424
2009-10-02 18:46:56 +00:00
Inderjeet Singh
c64b79c0f9
Implemented suggestions from the code review of r436: throwing NoSuchElementException in case the stream hits EOF.
2009-10-01 18:34:11 +00:00
Inderjeet Singh
3b1056c097
Renamed JsonParserAsync to JsonStreamParser as that is a more appropriate name.
...
Added a TODO in JsonSerializationVisitor per code review of r453.
2009-10-01 17:46:28 +00:00
Inderjeet Singh
8567fe6c10
Implementing code review comment from r428: Using Polymorphism for exclusion strategies for expose annotations.
2009-10-01 01:37:57 +00:00
Inderjeet Singh
907082102d
Added code to ensure that circular reference situations with custom handlers are detected.
...
Split CircularReferenceTest out of ObjectTest.
2009-09-29 20:43:31 +00:00
Joel Leitch
933a3e5150
Allow serialization of nulls in a "List<Object>" type.
2009-09-29 20:34:35 +00:00
Joel Leitch
e5ed1cc59a
Added some more tests.
2009-09-29 20:24:48 +00:00
Joel Leitch
e73ad007a4
Added test that serialize interfaces.
2009-09-29 19:03:49 +00:00
Joel Leitch
ad4ff6996b
Adding new default field naming policy
2009-09-29 18:44:56 +00:00
Joel Leitch
553a619ebd
Allow dashes as part of the field name.
2009-09-29 18:40:08 +00:00
Inderjeet Singh
e9a2a1d0f7
Fixed Issue 153 by using a stack to keep track of first elements at any level.
2009-09-29 17:52:49 +00:00
Inderjeet Singh
3e7ebf8556
Fixed issue 156.
...
Added support for serializing an object field (or array elements) as per its actual type.
Refactored inheritance related tests into its own test class. Added regression tests for issue 156.
2009-09-25 19:54:25 +00:00
Joel Leitch
8297437610
Reverting r499.
2009-09-23 19:25:50 +00:00
Joel Leitch
0e17041c8b
Added another test to JsonParserTest.
2009-09-23 19:21:09 +00:00
Joel Leitch
c6f762f36b
Fix Warnings
2009-09-23 19:09:01 +00:00
Joel Leitch
b0f50bb4be
Return a "JsonNull" object for empty whitespace input into the JsonParser.
2009-09-23 19:00:05 +00:00
Inderjeet Singh
fdcd3945c5
Fixed issue 147.
...
Integral values (byte, short, integer, long, BigInteger) are now comparable to each other.
Floating point values (float, double, BigDecimal) are now comparable to each other.
2009-09-23 18:54:01 +00:00
Joel Leitch
50eb582657
Ensure that the JsonElement.toString() will always generate valid JSON (even when control characters/whitespace characters are used).
2009-09-23 18:28:03 +00:00
Inderjeet Singh
3b0f8f4340
Removed all the JDK warnings about unused fields in test classes or unused constructors for use by Gson or instanceof calls on parameterized types.
2009-09-23 17:45:16 +00:00
Joel Leitch
18b301dfeb
- Serializing of Object arrays.
...
- Fixed incorrect warning
2009-09-22 19:04:27 +00:00
Inderjeet Singh
82771f006c
removed Java 1.5 warnings
2009-08-31 17:51:47 +00:00
Inderjeet Singh
cbcf7defa3
Updated Grammar for matching JsonArray to be left-associative rather than right-associative. Gson can now parse arrays of size over 11MB instead of 80KB which was the prior limit. Thanks for the tip, kenotron.
2009-08-22 01:03:27 +00:00
Inderjeet Singh
f4f596ec3d
Made JsonParser implement Iterator
2009-08-12 21:01:42 +00:00
Inderjeet Singh
41a1f8b89e
Added tests in response to http://groups.google.com/group/google-gson/browse_thread/thread/41478d30b9f100b5
2009-08-10 17:47:11 +00:00
Inderjeet Singh
b7cbfc5c34
Fixed Issue 141 by adding new APIs for writing out JSON string representation for JsonElements.
2009-08-07 20:58:41 +00:00
Inderjeet Singh
03a3cc83c3
Attempt to reproduce issue 140
2009-08-07 01:12:41 +00:00
Inderjeet Singh
64172d1dac
Added support to serialize and deserialize array of java.lang.Object when the content is a primitive type.
2009-07-27 23:24:23 +00:00
Inderjeet Singh
d8095c72fd
minor improvements to the test
2009-07-14 01:08:04 +00:00
Inderjeet Singh
eac1beacc9
Added performance tests for byte array serialization and deserialization.
2009-07-13 22:27:55 +00:00
Inderjeet Singh
4f0728f6a0
Fixed issue 126 by ensuring that parameterized type deduction is not done for transient fields.
2009-06-02 18:02:15 +00:00
Inderjeet Singh
6d50bcea87
Added serialize and deserialize parameters to the Expose annotation that control whether a field gets exposed during serialization or deserialization.
2009-05-19 23:47:53 +00:00
Joel Leitch
376385ac0e
Add a single quote to the HTML set of characters that should be escaped.
2009-05-19 19:49:25 +00:00
Joel Leitch
cd9bd71092
Allow JS Keywords as field name. These names are quoted anyways (and are valid according to the JSON spec) so it should not cause any issues.
2009-05-19 17:59:32 +00:00
Joel Leitch
abf4ab2d78
Fix project so it still compiles with JDK 1.5.
2009-05-19 17:51:02 +00:00
Inderjeet Singh
6e59e502c2
Refactored the Async parser interface out of JsonParser into a new class JsonParserAsync. Updated the JsonParser to detect Eof and return a null instead of throwing a ParseException.
2009-05-14 20:18:45 +00:00
Inderjeet Singh
0127891081
Added a new API method in JsonParser to allow reading of multiple JSON objects on a stream asynchronously.
2009-05-08 22:22:34 +00:00
Inderjeet Singh
b44bbbf5e7
Added an API method to create a tree of JsonElement from an object.
2009-04-03 21:33:01 +00:00
Joel Leitch
c8cb35e025
Adding copyright statement to JsonParserTest.
2009-04-01 16:56:40 +00:00
Inderjeet Singh
2034090b15
Changed version to 1.3
...
Made JsonParser.parse a non-static method.
2009-03-31 17:53:23 +00:00
Inderjeet Singh
8965d31ce9
made DEBUG final per the naming conventions.
2009-03-30 19:55:05 +00:00
Inderjeet Singh
e340801d25
Moved enum-related tests under EnumTest class.
2009-03-30 18:36:55 +00:00
Inderjeet Singh
4f727df749
Throwing JsonParseException when the user expected class doesn't match the JSON input during deserialization.
2009-03-27 23:17:46 +00:00
Joel Leitch
c9cb05fc72
Do not leak out a ClassCastException to our clients.
2009-03-27 19:43:33 +00:00
Inderjeet Singh
68f3899c1a
Updated the security token to make generated Json non-executable. Removed the unneeded <data> element at the end.
2009-03-20 18:02:35 +00:00
Inderjeet Singh
b2b2e5dc0a
Implemented enhancement request from issue 42 by supporting a new GsonBuilder setting generateNonExecutableJson() that prefixes the generated JSON with some special text that makes the output non-executable javascript. Gson now recognizes this special text in the input while parsing the JSON in fromJson and filters it out, if present.
2009-03-17 21:15:10 +00:00
Inderjeet Singh
1c5785be57
Tests to reproduce issue 95. The tests currently pass so the bug will be marked as invalid.
2009-03-12 20:54:00 +00:00
Inderjeet Singh
4fc6400f5c
Fixed the test that broke while fixing issue 100 in r394 by using a TreeSet for SortedSets and HashSet for other kind of sets.
2009-03-12 18:17:14 +00:00
Inderjeet Singh
a595032a90
Fixed issue 100 by adding support for deserialization of collections of elements that do not implement Comparable.
2009-03-12 01:59:48 +00:00
Inderjeet Singh
3d1f7251c1
Added tests to reproduce issue 103. The tests pass at the moment, so we need more information in the bugreport.
2009-03-12 01:04:30 +00:00
Inderjeet Singh
809e3b5e21
Fixed bug 106 by adding custom serialization support for Gregorian Calendar.
2009-03-11 21:46:58 +00:00
Inderjeet Singh
16be7167ec
Updated Gson grammar to support floating point numbers without a +/- after the E. So, 1.234567899E8 is now accepted by Gson as a valid floating point number. This fixed the bug http://code.google.com/p/google-gson/issues/detail?id=94
...
Also, updated Gson to use Javacc 4.2.
2009-03-05 23:05:29 +00:00
Inderjeet Singh
18005bbae1
using consistent method name prefixes.
2009-03-03 22:37:26 +00:00
Inderjeet Singh
2c25fdd850
Added a test to measure performance of Gson on large collections. Gson's parser handled a collection of 1.4 million objects for serialization. For deserialization, the numbers were lower and Gson parser gave a stack overflow beyond a collection of 87,000 objects.
2009-03-03 22:20:59 +00:00