11

残りのレイヤーに json スキーマ検証 (newtonsoft を使用) を実装しました。それは本当に違いをもたらしましたが、可能性とその方法について疑問があります.

特定のプロパティについては、以下が有効です (製品所有者によると)。

.... 選択肢: [] .......

.... 選択肢: [「こんにちは」、「世界」]

.... 選択肢: null .....

これは、json スキーマ定義の簡略化された例です。

{
   'description': 'myDescription',
   'type': 'object',
   'properties':
    {
     'name': {'type':'string', 'required': true},
     'description': {'type':'string'},
     'choices': {'type': 'array', 
         'items': {'type': 'string'}}
}

明らかに、最初の 2 つの例は検証に合格しますが、後者は「配列を期待しています」というエラーで失敗します。

プロパティはオプションです。

余談ですが、json スキーマ定義に関するドキュメントの完全なセットへの適切なリンクを誰かが持っている場合は、それを入手したいと思います。良い単一の情報源は見つかりませんでしたが、確かにあると思います。

ありがとうございました。

-r

4

2 に答える 2

21

次のように可能なタイプの配列を指定できます。

"myProperty": { "type": [ "array", "null" ], "required":false }

「myProperty」がタイプの配列内の任意のタイプである場合、json は検証に合格します。これはオプションのプロパティであり、プロパティがjsonに存在しない場合にのみ通過すると言ったので、requiredをfalseに設定しました。false に設定する必要があり、プロパティが json にあるが間違った型である場合、検証は失敗します。

これらは、私が知っている json スキーマに関する最高のドキュメントです。http://json-schema.org/latest/json-schema-validation.htmlサイトには有用な例がありませんが、必要な詳細はドキュメントに記載されています。

于 2013-07-09T17:24:45.807 に答える
1

choicesbeのデフォルト値を作ってみました[]か?

プロパティはオプションであると言ったので、オプションのパラメーター構文を使用していると思いますか、C#それとも間違っていますか?

于 2013-07-09T17:23:32.427 に答える