文字列の設定

    typestringを指定したものは、文字列のプロパティ値を期待する事になります。ただ文字列という情報だけでは範囲が広すぎる場合、それを狭める為のオプションもいくつか用意されています。

    文字列の長さの制限

    minLengthmaxLengthオプションが用意されています。どちらも設定するのは数値で、minLengthの数値以上maxLengthの数値以下の文字列に絞り込むことができます。

    {
      "type": "string",
      "minLength": 2,
      "maxLength": 5
    }

    この設定はabcは正しい、abcdefは間違いだと判断されます。

    文字列のパターンで制限

    例えば URL を期待している箇所に適当な文字列を置かれても困るので、 URL のパターンを設定することでそれにマッチしない場合は誤りであることを伝えることができます。これにはpatternオプションが用意されています。pattern内では\wなどの\\\とエスケープする必要があります。

    以下にいくつか絞る例を上げてみます。

    URL

    https://...みたいな文字列ですね。

    {
      "type": "string",
      "pattern": "^(http(s)?://)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$"
    }

    Color

    こちらは#fff#000000のような文字列に絞れます。

    {
      "type": "string",
      "pattern": "^#([0-9a-fA-F]{3}){1,2}$"
    }

    特定のワードに限定

    これは別にstringだけのオプションではないですが、enumオプションがあります。type:stringの場合、これは文字列の配列を指定できます。以下に例を置きます。

    {
      "type": "string",
      "enum": [
        "foo",
        "bar",
        "baz"
      ]
    }

    この設定で上のプロパティはfoobar, bazのどれかを置いてほしいという意味になります。

    ここでexamplesというオプションも似たような動作になります。ただし、enumは「必ずどれかを置く」というのを期待しますがexamplesの場合は、単に「例えばこういうのが置けますよ」と提示するだけです。

    {
      "type": "string",
      "examples": [
        "foo",
        "bar",
        "baz"
      ]
    }

    デフォルト値

    defaultを使うと初期値を設定できます。

    {
      "type": "string",
      "default": "foo"
    }