aboutsummaryrefslogtreecommitdiff
path: root/csharp/src/Google.Protobuf/JsonParser.cs
Commit message (Collapse)AuthorAgeFilesLines
* Handle JSON parsing for Any.Jon Skeet2015-12-021-10/+139
| | | | This required a rework of the tokenizer to allow for a "replaying" tokenizer, basically in case the @type value comes after the data itself. This rework is nice in some ways (all the pushback and object depth logic in one place) but is a little fragile in terms of token push-back when using the replay tokenizer. It'll be fine for the scenario we need it for, but we should be careful...
* Tidy up reflection in advance of attempting to implement DynamicMessage.Jon Skeet2015-11-221-2/+1
| | | | | | | | | There are corner cases where MessageDescriptor.{ClrType,Parser} will return null, and these are now documented. However, normally they *should* be implemented, even for descriptors of for dynamic messages. Ditto FieldDescriptor.Accessor. We'll still need a fair amount of work to implement dynamic messages, but this change means that the public API will be remain intact. Additionally, this change starts making use of C# 6 features in the files that it touches. This is far from exhaustive, and later PRs will have more. Generated code changes coming in the next commit.
* Introduce a Parser property into MessageDescriptor, and populate it from ↵Jon Skeet2015-11-191-5/+1
| | | | | | generated types. Generated code coming in next commit - in a subsequent PR I want to do a bit of renaming and redocumenting around this, in anticipation of DynamicMessage.
* Generated code changes and manual changes for previous commit.Jon Skeet2015-11-091-2/+2
|
* Merge pull request #941 from jskeet/recursion-limitJan Tattermusch2015-11-051-13/+24
|\ | | | | Add recursion limit handling to JSON parsing.
| * Reimplement JSON recursion by detecting the depth in the tokenizer.Jon Skeet2015-11-051-34/+33
| | | | | | | | Added a TODO around a possible change to the tokenizer API, changing PushBack(token) into just Rewind() or something similar.
| * Add recursion limit handling to JSON parsing.Jon Skeet2015-11-041-42/+54
| | | | | | | | Fixes issue #932.
* | Merge pull request #940 from jskeet/json-namesJon Skeet2015-11-051-6/+1
|\ \ | | | | | | Move the creation of the "fields by JSON name" dictionary to the descriptor
| * | Move the creation of the "fields by JSON name" dictionary to the descriptor.Jon Skeet2015-11-041-6/+1
| |/
* / Created a new exception for JSON failures.Jon Skeet2015-11-051-0/+4
|/ | | | | | This is only thrown directly by JsonTokenizer, but surfaces from JsonParser as well. I've added doc comments to hopefully make everything clear. The exception is actually thrown by the reader within JsonTokenizer, in anticipation of keeping track of the location within the document, but that change is not within this PR.
* Implement JSON parsing in C#.Jon Skeet2015-11-031-0/+813
This includes all the well-known types except Any. Some aspects are likely to require further work when the details of the JSON parsing expectations are hammered out in more detail. Some of these have "ignored" tests already. Note that the choice *not* to use Json.NET was made for two reasons: - Going from 0 dependencies to 1 dependency is a big hit, and there's not much benefit here - Json.NET parses more leniently than we'd want; accommodating that would be nearly as much work as writing the tokenizer This only really affects the JsonTokenizer, which could be replaced by Json.NET. The JsonParser code would be about the same length with Json.NET... but I wouldn't be as confident in it.