Skip to content

Unify path handling #2153

Description

@sdirix

At the moment we maintain two different paths in JSON Forms:

  • The scope JSON Pointer paths used in UI Schema to resolve to subschemas of the handed over JSON Schema
  • The dot-separated path paths (lodash format) to resolve to entries in the form-wide data object

The JSON Pointers are well defined and JSON Forms support escaping of their special characters (/ and ~).
The dot-separated paths however don't support escaping, leading to errors when a . is contained within the path. This was already reported in #1631 and #1849

To fix the issues and to harmonize path handling in JSON Forms we should settle on JSON Pointers for all paths. As a consequence data paths would change from person.name to /person/name.

Benefits:

  • Well defined path format for which we already support escaping
  • By keeping the data path as a string (in contrary to changing it to an array) we preserve memoization in the application frameworks (especially React, Vue).
  • No more converting between paths, for example can be easily compared to AJV's JSON Pointers

Downside:

  • Breaks custom code which manually modified or created paths

Therefore it should be released only with a 4.0 version and be mentioned in the MIGRATION guide.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions