Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Prototype moving JsonData to be backed by JsonDocument (#33063)
* Add WriteTo(), ==operators, and PR FB * export API * Add DocumentSentiment large JSON sample and add parse and read benchmarks * initial attempt to move to JsonElement * some fixes * updates * nit * nits * starting to experiment with changelist approach * an approach to object assignment * start working with array elements * saving changes from before break... * sm formatting pr fb * ApiView FB per generality of DynamicData * nits * small thoughts * first steps toward abstracting ChangeTracker * In flight changes while implementing AddPropertyToObject * adding tests with simple modifications to structural elements * Implementing WriteTo() * Added nested objects * refactor * missed changes * In TDD spirit, add failing WriteTo test * Test passes * quick refactor * update add property test * Update WriteTo to handle property additions at the root element * Handle property additions on arbitrary objects * handle standard property removals * Support Replace with object * Support Replace with object * refactor where we serialize structural changes to centralize * Implement reference semantics for JsonDataElement * experiment with checking ancestors for structural changes. * Update WriteTo to handle structural changes. * add high water mark logic * add validation to all reads and add failing test for ignoring pre-structural change. * Incorporate HWM logic in all change lookups; make PriorChangeToReplacedPropertyIsIgnored * remove double-check of object and array elements * some tidy up * Reimplement GetProperty in terms of TryGetProperty() * Handle WriteTo for structural changes. * add some tests of structural changes * refactor tests * Bug fix to WriteTo for bools and test refactoring * bug fix to WriteTo for booleans * Add support for nulls and fix ToLower() bug * add perf benchmark prior to working on perf * missed file * update Parse() to use Memory<byte> * move subclasses to separate files for ease of reading * refactor to add dynamic layer * Add cast operators to JsonDataElement to pass dynamic GetIntProperty test * Add support for dynamic nested property access * enable set via dynamic layer * Enable setting nested properties via dynamic layer * nit * Renames prior to dynamic refactor * start adding separate dynamic layer * Move dynamic meta object to dyanmic types. * API updates * todos and nits * rename test to match types * remove outer DynamicJson class * add BindConvert to dynamic layer * Add BindGetIndex to dynamic layer * save multitarget attempt * Add target frameworks to Experimental to allow ifdefs by target framework. * PR feedback; use more efficient Deserialize call when available in ConvertTo() * refactor per PR fb * Add BindSetIndex to dynamic layer * Fix bug in mutable ToString() where changes to descendants weren't accounted for * Fix WriteTo() bug for string elements and add failing test for handling nulls * Handle null values * PR fb * Add support for floats and longs * remove HasValue, per pr fb * export API changes * Support adding properties on dynamic member assignments * reshuffle methods around * some changes before adding support for IEnumerable * Add ArrayEnumerator to MutableJsonElement * missed file; dynamic portion not complete * Bug fix to dynamic ArrayEnumerator; foreach over array now passes * export API and misc test updates * nit; cleanup * Make MutableJsonDocument serializable * Make DynamicJson serializable; enable reference semantics for added properties * Make tests pass for net6.0 & net7.0; will address net461 separately * Fixes for some net461 issues * Fix Add and Set property for net461 * Work around BindBinaryOperation in net461; move inline TODOs to GH issue * Export API
- Loading branch information