JSON開発ノート(二)——JSON Schema実戦(上)

3891 ワード

1.JSON Schema概要


JSONはXMLに比べて多くの面でより多くの優位性を持っていることを知っています.未来、JSONはXMLに取って代わって、歴史の大勢の赴くところである可能性が高い.XMLについてよく知られているように、XML SchemaはXML言語に基づいて、XMLドキュメントの構造を記述したり、XMLドキュメントの内容を検証したりするために使用されます.つまり、よく見られるXSD(XML Schema Definition)ファイルです.
XML Schemaと同様、JSON SchemaはJSON形式に基づいており、JSONデータ構造を定義し、JSONデータの内容を検証するために使用されます.JSON Schema公式サイトアドレス:http://json-schema.org/

2.簡単な例から


JSONデータがある場合、具体的な内容は以下の通りです.
{
    "id": 520,
    "name": "hello first blog",
    "price": 25.5
}

このうちidは図書のID,nameは図書の本名,priceは図書の価格を表す.もしあなたが図書館の管理者であれば、多くのアルバイトを雇って図書館内のすべての図書情報を手動で入力してあげます.フォーマットは上のJSONと一致しており、パートタイムの誤った汚いデータ入力を避けるために、以下の追加要求があります.
  • idは1から始まり、整数
  • のみである.
  • nameの長さは0より大きいはずですが、50
  • 以下です.
  • priceは0より大きくなければならない.整数でも小数
  • でもよい.
  • 各図書の3つの属性(id、name、price)には
  • の値が必要です.
    もし図書館に何千冊もの図書があれば、アルバイト一人一人が自分の入力した情報をまとめて、あなたは最後のチェックと審査をして、この仕事量は非常に大きくて、しかもミスが発生しやすいと思います.そこで,JSON Schemaにより入力されたJSONデータの正当性を検証する別の自動化方式を採用した.
    上記のすべての要求をJSON Schemaファイルに書き込むと、その内容は以下の通りです.
    {
        "$schema": "http://json-schema.org/draft-04/schema#",
        "title": "BookInfo",
        "description": "some information about book",
        "type": "object",
        "properties": {
            "id": {
                "description": "The unique identifier for a book",
                "type": "integer",
                "minimum": 1
            },
            "name": {
                "description": "Name of the book",
                "type": "string",
                "maxLength": 50,
                "minLength": 1
            },
            "price": {
                "type": "number",
                "minimum": 0,
                "exclusiveMinimum": true
            }
        },
        "required": [
            "id",
            "name",
            "price"
        ]
    }
    

    JSON Schemaは実際にはJSONファイルであるが,その表示される情報内容は別のJSONファイル構造とコンテンツに対する制約であることがわかる.

    3.JSON Schemaキーワード


    上記のJSON Schemaファイルの内容を完全に理解するには、まずJSON Schemaのキーワードの意味と役割を理解する必要があります.JSON Schemaでよく見られるキーワードは以下の通りです.
    キーワード
    説明
    $schema
    このJSON Schemaファイルが準拠していることを示す仕様
    title
    このJSON Schemaファイルのタイトルを提供します
    description
    このJSON Schemaファイルの説明情報について
    type
    検証対象要素のタイプを表します(たとえば、最外層のtypeは検証対象がJSONオブジェクトであることを示し、内層typeはそれぞれ検証対象要素のタイプが、整数、文字列、数字であることを示します).
    properties
    検証対象のJSONオブジェクトにおける各key-value対中valueの制限条件の定義
    required
    検証対象のJSONオブジェクトに存在するキーの定義
    minimum
    値範囲を制約するために使用されます.値範囲がminimum以上であることを示します.
    exclusiveMinimum
    minimumとexclusiveMinimumが同時に存在し、exclusiveMinimumの値がtrueの場合、値の範囲はminimumよりのみ大きくなります.
    maximum
    値範囲を制約するために使用されます.値範囲がmaximum以下であることを示します.
    exclusiveMaximum
    maximumとexclusiveMaximumが同時に存在し、exclusiveMaximumの値がtrueの場合、値の範囲はmaximumより小さいことを示します.
    multipleOf
    値をコンストレイントするために使用されるのは、multipleOfで指定された値で値を除去できる必要があることを示します.
    maxLength
    文字列タイプデータの最大長
    minLength
    文字列タイプデータの最小長
    pattern
    正規表現を使用して文字列タイプデータを制約する
    ここで、typeの一般的な値は以下の通りです.
    type取値
    対応するJavaデータ型
    array
    java.util.List
    boolean
    java.lang.Boolean
    integer
    int(java.lang.Integer)
    number
    float(java.lang.Float)またはint
    null
    null
    object
    java.lang.Object
    string
    java.lang.String
    これらのキーワードの意味を熟知していれば、JSON Schemaの内容を読むのも難しくなくなり、JSON Schemaファイルを書くこともできます.

    4.JSON Schemaオンラインツール


    JSON Schemaのオンラインサポートツールはたくさんありますが、以下のいくつかをお勧めします.
  • JSONと対応するJSON Schemaに基づいてデータの正確性を検査する:http://json-schema-validator.herokuapp.com/
  • JSONデータに基づき、対応するJSON Schemaデータを生成する.https://jsonschema.net/#/editor
  • JSONデータに基づき、対応するJSON Schemaデータを生成する.http://schemaguru.snowplowanalytics.com/#