Open3
JSONSchemaとZodの比較や問題点

- JSONSchemaにはエラーメッセージを指定するプロパティがない
- ZodではallOf/oneOfがrefineになってしまう
- refine は手続き的に条件を記述できるがエラーメッセージを細かく区分するには、条件の記述を分ける必要がある
- superRefineでは ctx.addIssueを利用すればメッセージを具体的に追加できる

JSONSchemaのifの表現は冗長すぎる。x-ifのようなプラグインを作るべき

JSONSchemaでは、条件プロパティによって、ほかのプロパティの値を制限できる
if:
properties:
propA:
const: A1
then:
properties:
propB:
enum: ["B1", "B2"]
propC: false # false と指定することでプロパティpropCを受け付けないという意図を表現できる