LoginSignup
91
78

More than 5 years have passed since last update.

json schemaのよく利用する機能まとめ

Posted at

みなさんjson schema利用していますか?
webAPIのスキーマテストをjson schemaを利用して行っているので、実装時に利用した機能のちょっとしたメモを公開します。

properties

  • オブジェクト(連想配列)の唯一の名前を指定できる
  • 値が一つだけの場合はこれを用いると楽
    "properties": {
        "/": {}
    }

patternproperties

  • 正規表現を用いてオブジェクト名のバリデートができる
    "patternProperties": {
        "^(/[^/]+)+$": {}
    }

additionalProperties

  • 未定義のプロパティを拒否する
  • 下の例は、"/"と同じ階層に他のプロパティが入るとバリデートされる
    "properties": {
        "/": {}
    },
    "additionalProperties": false

type

  • keyの値の型のバリデート
"type": "object"
名称 説明
array 配列型
boolean 真偽値型
integer 整数型。少数と指数部はのぞく
number 実数型?
null null型
object 連想配列型
string 文字列型

minimum

  • keyの最小の値を指定

exclusiveMinimum

  • minimumで指定した値を含めるのか含めないのかをbooleanで指定。
  • true => 含めない
  • false => 含める
  • 省略可で、デフォルトはfalse

maximum

  • keyの最大の値を指定

exclusiveMaximum

  • maximumで指定した値を含めるのか含めないのかをbooleanで指定。
  • true => 含めない
  • false => 含める
  • 省略可で、デフォルトはfalse

pattern

  • keyの値を正規表現を用いてバリデートできる。"type":"string"を指定した場合のみ使用できる。
  • 使用できる特殊文字が限られるので注意。例えば数値にマッチさせる\dは使用できない。詳しくはこちら
"pattern": "^/dev/[^/]+(/[^/]+)*$"

required

  • propertiesで定義した値の中で、必ず入っていなければならない値を選択できる。
  • 下の例は、"name""email"が必須項目で、それ以外の値はあってもなくてもバリデートされない。
{
  "type": "object",
  "properties": {
    "name":      { "type": "string" },
    "email":     { "type": "string" },
    "address":   { "type": "string" },
    "telephone": { "type": "string" }
  },
  "required": ["name", "email"]
}

参考URL

91
78
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
91
78