Open3

JSONSchemaとZodの比較や問題点

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

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

OSAMU NAKAMURAOSAMU NAKAMURA

JSONSchemaでは、条件プロパティによって、ほかのプロパティの値を制限できる

if:
  properties:
    propA:
      const: A1
then:
  properties:
    propB:
      enum: ["B1", "B2"]
    propC: false     # false と指定することでプロパティpropCを受け付けないという意図を表現できる