2017-11-10 21 views
1

jsonSchemaLintをテスト目的で使用することができます。JsonSchemaでは、フォーマットの値を「フルデート」または「日付」に設定する必要がありますか?

私はこのフォーマットを「フルデート」として設定するJsonSchemaを持っています。すべてのDraft-6バリデーター(Json.Net)はスキーマを有効として受け入れます。

{ 
    "title": "MyTestSchema", 
    "type": "object", 
    "properties": { 
    "MyDateValue": { 
     "type": "string", 
     "format": "full-date", 
     "description": "We expect yyyy-MM-dd" 
    } 
    } 
} 

しかし、このJSONオブジェクトが間違って識別することができません:

{ 
"MyDateValue": "2017-10-1" 
} 

私は唯一の「日付」に「フル日」からスキ​​ーマを切り替えると、それが動作:

{ 
    "title": "MyTestSchema", 
    "type": "object", 
    "properties": { 
    "MyDateValue": { 
     "type": "string", 
     "format": "date", 
     "description": "We expect yyyy-MM-dd" 
    } 
    } 
} 

Jsonの規則として、トップ( "フルデート")の正しい言葉ですか?いくつかのドキュメントを参照してください。

答えて

1

値はdateなくfull-dateする必要があります後 this documentation

を参照してください有効な値

  1. 日時です:これはYYYY-のISO 8601形式の日付であるべきですMM- DDThh:mm:ssZ(UTC時間)。これは、日付/ タイムスタンプの推奨される形式です。

  2. 日付:これは、YYYY-MM-DDの形式の日付であるべきです(SHOULD)。 日付部分のみの転送が必要な場合を除き、「日付」 の代わりに「日付時刻」形式を使用することをお勧めします。

  3. 時間:これはhh:mm:ssの形式であるべきです(SHOULD)。 は、時間部分のみを転送する必要がある場合を除き、「時間」の代わりに「日付」形式を使用することをお勧めします。

  4. UTC-ミリ秒:これは、指定された時間と真夜中の間 ミリ秒単位で測定された差、、、 00:00 1970年1月1日UTCである必要があります。値は数値(整数または float)でなければなりません。

ソース:here

0

はgithubのhereでこの問題を参照すると、バリデータがそれをキャプチャすることはできないかもしれないと知識を、自分のスキーマのコードを作成するためにOKだったが判明しました。

"フォーマットは拡張可能であるため、技術的には常に正しいですが、ユーザ定義のフォーマットは認識できないバリデータによって無視されます。もちろん、他の誰かがバリデータを認識するように設定したバリデータを使用している場合

draft-04またはdraft-06では、フルネームのJSONスキーマを使用していますが、この名前はJSONスキーマのバージョンによって異なります。日付は公式形式ではありません。それをカスタムフォーマットとして追加し、それを持たない人は、RFC 3339で意味するものと同じことを意味しているのですが、問題を抱えています。

draft-07のfull-dateは、予約されたRFC3339形式の名前空間の一部であり、実装されている場合、RFC3339のfull-dateの定義と互換性がなければならない(MUST)。 draft-07はまた、日付をフルデートの同義語として定義し、それを代わりに使用することを推奨しています。

どちらの方法でも、ここで表示されているこの使用法は、RFC 3339と一致するため、おそらくかなり安全です。標準では、サポートは行われませんが、実装されていれば、 RFC3339。 "

関連する問題