2017-10-10 14 views
0

データの検証にJSON Schemaを使用しています。

私は、予約されたキーワード$ idを使用して自分のスキーマに間違いがあると思います。このフィールドの目的は、別のプラットフォーム上のプロパティのREMOTE IDが何であったかを指定することでした。それは「起源ID」でした。

$ idは何かをアドバイスしてください。私が致命的な間違いを犯した場合、この値を変更する必要がありますか?ドキュメントでは、この定義が見つかりました:

存在する場合、このキーワードの値は文字列でなければならず、有効なURI参照[RFC3986]を表さなければなりません。この値を正規化し、空のフラグメント<#>または空の文字列<>である必要があります(SHOULD NOT)。

答えて

1

$ idは予約済みのキーワードです。 $ refのURLは

を解決しているあなたは、スキーマ、またはAを識別することができますに対するベースURLを宣言スキーマまたはサブスキーマ

  • の識別子を宣言

    • :それはするのに役立つ

      $ idを使用してスキーマの一部(サブスキーマ)を作成し、$ refキーワードを使用して別の場所に再利用することができます。これを見るための最も簡単な方法は、$ refが対応するidのスキーマに置き換えられることです。

  • 1

    $ idは、スキーマのベースURIを変更するので、その同じスキーマまたはそのサブスキーマのいずれかにおける任意の$ refの値が異なって解決されます。お使いのベースURIだった "https://example.com/thing" と場合

    はたとえば、あなたは "https://example.com/foo" し、 "$ refが" に "foo" が解決され、このスキーマ

    { 
        "allOf": [ 
         {"$ref": "foo"}, 
         { 
          "$id": "stuff/and/nonsense", 
          "allOf": {"$ref": "bar"} 
         } 
        ] 
    } 
    

    を持っていました。しかし、 "$ ref"から "bar"は "https://example.com/stuff/and/bar"に解決されます。

    "$ id"を別の目的のために入れても、特に "$ ref"解決に問題が発生する可能性があります。

    関連する問題