0

nodejsで着信jsonパケットを検証するためにjsonスキーマバリデーターを使用しています。キー値が存在するかどうかを確認でき、無効なキーが存在するかどうかも確認できます。正常に動作しています。

これは私のjsonスキーマコードです。

function testLoginJsonSchema() {
}

testLoginJsonSchema.loginRequestSchema = {
            type: 'object',
            properties: {
                uname: {
                    type: 'string',
                    required: true
                },
                password: {
                    type: 'string',
                    required: true
                }
            },
            "additionalProperties": false
        };

module.exports = testLoginJsonSchema;

しかし、キーが重複しているかどうかを確認する必要があります。このコードでは機能しません。

有効なjson

 {
        "uname":"test@manaf.com",
        "password":"validPassword"

 }

無効な json

  {
        "uname":"test@manaf.com",
        "password":"InvalidPassword",
        "password":"validPassword"

  }

無効な json 要求に対して「無効な json パッケージ」というエラー メッセージを生成する必要があります。それはどのように可能になりますか?

4

1 に答える 1

0

JSON スキーマは、JSON ドキュメントによって表現されるデータ構造に対する制約を定義します。したがって、JSON スキーマについて考える前に、JSON ドキュメントをデコードする方法を理解する必要があります。ここに問題があります。

RFC 7159 (および以前の RFC 4627)に従って、JSON テキストに重複するキーを含めることはできません。

オブジェクト内の名前は一意である必要があります。

このドキュメントをデコードするときの動作は未定義です (セクション 4の 2 番目の段落を参照)。一部の実装では、これを無効な JSON として扱い、警告を発します。ほとんどの実装では、値の 1 つ (最初または最後) を取得し、他の値を無視します。JSON.stringify()重複キーを生成する可能性のある入力はありません。

したがって、JSON ドキュメントと思われるドキュメントで重複キーをチェックする必要がある場合は、スキーマ バリデータに到達する前に、JSON デコード ステップでこれを行う必要があります。

于 2015-12-14T14:42:26.123 に答える