json_schemer icon indicating copy to clipboard operation
json_schemer copied to clipboard

Follow refs when finding default property values

Open davishmcclurg opened this issue 1 year ago • 0 comments

This resolves any ref_schema keywords ($ref, $dynamicRef, $recursiveRef) when looking for default keywords for insert_property_defaults. It follows the keyword order defined in the vocabulary ($ref first, then $dynamicRef/$recursiveRef depending on the meta schema) and searches depth-first (ie, follows a $ref chain until a leaf schema before moving on to a sibling $dynamicRef). The first default keyword found is used, meaning a $ref default can be overwritten by the including schema, eg:

{
  "properties": {
    "example": {
      "$ref": "#/$defs/ref",
      "default": "override!"
    }
  },
  "$defs": {
    "ref": {
      "default": "overridden"
    }
  }
}

Closes: https://github.com/davishmcclurg/json_schemer/issues/173

davishmcclurg avatar Feb 25 '24 21:02 davishmcclurg