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と一致しており、パートタイムの誤った汚いデータ入力を避けるために、以下の追加要求があります.
もし図書館に何千冊もの図書があれば、アルバイト一人一人が自分の入力した情報をまとめて、あなたは最後のチェックと審査をして、この仕事量は非常に大きくて、しかもミスが発生しやすいと思います.そこで,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のオンラインサポートツールはたくさんありますが、以下のいくつかをお勧めします.