json 検証にpython-jsonschemaを使用しています。次のように、rfc1766 言語コード キー内で指定されたローカライズされたテキストを含むオブジェクトがあります。
"Description": {
"en": "English Description",
"sv": "Swedish Description",
"fr": "French Description"
},
「format」属性を使用して、関数を使用してカスタム形式をチェックできることをドキュメントで読みました。そこで、文字列を引数に取り、RFC1766 言語文字列であれば True を返すメソッドを書きました。
@_checks_drafts('rfc1766lang')
def rfc1766lang(instance):
"""some logic, return True if rfc1766"""
ただし、これを適用して値ではなくオブジェクトキーの検証を行う方法の例は見つかりませんでした。
これは可能ですか?
以下のようなことを試しましたが、成功しませんでした
rfc1766_string_schema_v2 = {
'type': 'object',
'format': 'rfc1766lang',
'additionalProperties': False
}
次のようなjson文字列があれば、はるかに簡単になることがわかっています。ただし、これは現時点ではオプションではありません。
"Description": [{
"lan": "en",
"text": "Description in English"
}, {
"lan": "sv",
"name": "Description in Swedish"
}]