I have a love/hate relationship with JSON schema. I hate the documentation, or significant lack thereof. But I do love how business rules about relationships between fields can be expressed in the schema - e.g., if typeId is 7, then the cost field must be populated.
With things like Avro or GPB you still need to validate that the relationship holds true separately.
With things like Avro or GPB you still need to validate that the relationship holds true separately.