programing

JSON 스키마에서의 RegEx 사용

goodsources 2023. 4. 6. 21:37
반응형

JSON 스키마에서의 RegEx 사용

RegEx를 사용하여 항목의 값을 검증하는 JSON 스키마를 작성하려고 합니다.

progBinaryName이라는 이름의 아이템이 있으며, 그 값은 이 RegEx 문자열에 관련됩니다."^[A-Za-z0-9 -_]+_Prog\\.(exe|EXE)$".

JSON 스키마에서 RegEx를 실제로 사용하는 방법을 설명하는 튜토리얼 또는 예를 찾을 수 없습니다.

어떤 도움/정보라도 감사히 받겠습니다!

고마워, D

JSON 스키마

{
    "name": "string",
    "properties": {
        "progName": {
            "type": "string",
            "description": "Program Name",
            "required": true
        },
        "ID": {
            "type": "string",
            "description": "Identifier",
            "required": true
        },
        "progVer": {
            "type": "string",
            "description": "Version number",
            "required": true
        },
        "progBinaryName": {
            "type": "string",
            "description": "Actual name of binary",
            "patternProperties": {
                "progBinaryName": "^[A-Za-z0-9 -_]+_Prog\\.(exe|EXE)$"
            },
            "required": true
        }
    }
}

에러:

경고!JSON을 확인하는 게 좋을 거야

인스턴스는 필수 유형이 아닙니다. http://json-schema.org/draft-03/hyper-schema#


스키마는 유효한 JSON이지만 유효한 스키마가 아닙니다.


검증 결과: 실패

[ {
    "level" : "warning",
    "schema" : {
        "loadingURI" : "#",
        "pointer" : ""
    },
    "domain" : "syntax",
    "message" : "unknown keyword(s) found; ignored",
    "ignored" : [ "name" ]
}, {
    "level" : "error",
    "domain" : "syntax",
    "schema" : {
        "loadingURI" : "#",
        "pointer" : "/properties/ID"
    },
    "keyword" : "required",
    "message" : "value has incorrect type",
    "expected" : [ "array" ],
    "found" : "boolean"
}, {
    "level" : "error",
    "domain" : "syntax",
    "schema" : {
        "loadingURI" : "#",
        "pointer" : "/properties/progBinaryName"
    },
    "keyword" : "required",
    "message" : "value has incorrect type",
    "expected" : [ "array" ],
    "found" : "boolean"
}, {
    "level" : "error",
    "schema" : {
        "loadingURI" : "#",
        "pointer" : "/properties/progBinaryName/patternProperties/progBinaryName"
    },
    "domain" : "syntax",
    "message" : "JSON value is not a JSON Schema: not an object",
    "found" : "string"
}, {
    "level" : "error",
    "domain" : "syntax",
    "schema" : {
        "loadingURI" : "#",
        "pointer" : "/properties/progName"
    },
    "keyword" : "required",
    "message" : "value has incorrect type",
    "expected" : [ "array" ],
    "found" : "boolean"
}, {
    "level" : "error",
    "domain" : "syntax",
    "schema" : {
        "loadingURI" : "#",
        "pointer" : "/properties/progVer"
    },
    "keyword" : "required",
    "message" : "value has incorrect type",
    "expected" : [ "array" ],
    "found" : "boolean"
} ]

Problem with schema#/properties/progBinaryName/patternProperties/progBinaryName : Instance is not a required type
Reported by http://json-schema.org/draft-03/hyper-schema#
Attribute "type" (["object"])

RegEx에 대해 문자열 값(속성 이름이 아님)을 테스트하려면"pattern"키워드:

{
    "type": "object",
    "properties": {
        "progBinaryName": {
            "type": "string",
            "pattern": "^[A-Za-z0-9 -_]+_Prog\\.(exe|EXE)$"
        }
    }
}

추신 - 패턴이 (값이 아닌) 속성의 와 일치하도록 하려면"patternProperties"(마치"properties"단, 열쇠는 RegEx)입니다.

JSON 스키마 구문이 잘못되었습니다.바꾸다

"patternProperties": {
    "progBinaryName": "^[A-Za-z0-9 -_]+_Prog\\.(exe|EXE)$"
    }

로.

"patternProperties": {
    "^[A-Za-z0-9 -_]+_Prog\\.(exe|EXE)$": {}
    }

언급URL : https://stackoverflow.com/questions/16491973/using-regex-in-json-schema

반응형