{ "type": "date", "format": "M/d/yyyy", "value": "5/5/2008" }
represents a date encoded in the value
member as a JSON string. Suppose further, the type
confirms that the entire JSON object indeed describes a date and the format
member specifies how to interpret the value
member. To correctly create the date, an application would have to assert the type
member, then read the format
member to determine how to decode the value
member value correctly. If the application assumes that the members are always provided in the natural order just described then it can simply use a JsonReader and process them in sequence along with their values. However, if the JSON object instead has members out of order, as in { "value": "5/5/2008", "type": "date", "format": "M/d/yyyy" }
, then reading becomes a bit more cumbersome. The application would have to buffer the value
and format
member values until it has at least seen the type
member and asserted its value to be date
. Then it has to return to the buffered value of the format
member and use it to finally decode the also-buffered value
member. This is where FreeJsonMemberReadingHelper can help tremendously. The application can call its ReadMember method to read members in the natural order of processing (e.g., type
, format
and value
) rather than how they have been actually ordered by some source. FreeJsonMemberReadingHelper will buffer or stream from the underlying JsonReader as needed. Once the required members have been processed, the GetTailReader method can be used to read auxillary or optional members in their order of appearance.