JSON 개발노트(둘)-JSON Schema 실전(상)

4061 단어
1. JSON Schema 소개
우리는 JSON이 XML에 비해 여러 방면에서 더 많은 장점을 가진다는 것을 안다.앞으로 JSON이 각 방면에서 XML을 대체하는 것이 역사의 대세일 가능성이 높다.XML을 아는 사람들은 XML Schema가 XML 언어를 바탕으로 XML 문서의 구조를 설명하고 XML 문서의 내용을 검증하는 데 사용된다는 것을 알고 있다. 즉, 우리가 흔히 볼 수 있는 XSD(XML Schema Definition) 파일이다.
XML Schema와 유사하게 JSON Schema는 JSON 형식을 바탕으로 JSON 데이터 구조를 정의하고 JSON 데이터 내용을 검사하는 데 사용된다.JSON Schema 홈페이지 주소:http://json-schema.org/
2. 간단한 예로부터 시작
만약 JSON 데이터가 존재한다면 구체적인 내용은 다음과 같다.
{
    "id": 520,
    "name": "hello first blog",
    "price": 25.5
}

이 중 id는 도서의 ID를, name는 도서의 제목을, price는 도서의 판매가를 나타낸다.만약 네가 도서관의 관리인이라면, 많은 아르바이트 인원을 고용해서 너를 도와 도서관 안의 모든 도서 정보를 수동으로 기록해 줄 것이다.형식은 위의 JSON과 일치하며 아르바이트생이 더러운 데이터를 실수로 입력하는 것을 피하기 위해 다음과 같은 추가 요구를 했습니다.
  • id는 1부터 시작하며 정수
  • 만 가능합니다.
  • name의 길이는 0보다 크지만 50
  • 보다 작다
  • price는 0보다 커야 하며 정수일 수도 있고 소수일 수도 있다
  • 각 도서의 세 가지 속성(id,name,price)은 반드시 값이 있어야 한다
  • 만약에 도서관에 수천 권, 심지어 수만 권의 도서가 있다면 모든 아르바이트생들이 자신이 입력한 정보를 당신에게 종합해 줄 것이다. 당신이 마지막 점검과 심사를 한다면 이 업무량은 매우 크고 실수하기 쉽다.그래서 우리는 또 다른 자동화 방안, 즉 JSON Schema를 통해 입력된 JSON 데이터의 합법성을 검증하는 것을 채택한다.
    위의 모든 요구 사항을 JSON Schema 파일에 기록한 경우 그 내용은 다음과 같습니다.
    {
        "$schema": "http://json-schema.org/draft-04/schema#",
        "title": "BookInfo",
        "description": "some information about book",
        "type": "object",
        "properties": {
            "id": {
                "description": "The unique identifier for a book",
                "type": "integer",
                "minimum": 1
            },
            "name": {
                "description": "Name of the book",
                "type": "string",
                "maxLength": 50,
                "minLength": 1
            },
            "price": {
                "type": "number",
                "minimum": 0,
                "exclusiveMinimum": true
            }
        },
        "required": [
            "id",
            "name",
            "price"
        ]
    }
    

    이를 통해 알 수 있듯이 JSON Schema는 사실상 하나의 JSON 파일이다. 단지 그가 나타내는 정보 내용은 다른 JSON 파일의 구조와 내용에 대한 제약일 뿐이다.
    3. JSON Schema 키워드
    위의 JSON Schema 파일 내용을 완전히 이해하려면 먼저 JSON Schema에서 키워드의 의미와 작용을 이해해야 합니다.JSON Schema에서 일반적으로 사용되는 키워드는 다음과 같습니다.
    키워드
    묘사
    $schema
    JSON Schema 파일이 따르는 사양을 나타냅니다.
    title
    JSON Schema 파일의 제목을 지정합니다.
    description
    JSON Schema 파일에 대한 설명 정보
    type
    검사할 요소의 유형을 나타냅니다. 예를 들어 가장 바깥쪽 type은 검사할 요소가 JSON 대상이고 안쪽 type은 검사할 요소의 유형을 정수, 문자열, 숫자로 나타냅니다.
    properties
    검사할 JSON 객체의 키-value 쌍 중value에 대한 제한 조건을 정의합니다.
    required
    검증할 JSON 객체에 존재해야 하는 키를 정의합니다.
    minimum
    범위가 미니멀보다 크거나 같아야 함을 나타내는 범위입니다.
    exclusiveMinimum
    미니멀과 exclusive Minimum이 동시에 존재하고 exclusive Minimum의 값이true인 경우 범위는 미니멀보다 클 수 있음
    maximum
    수치 범위를 제약하는 데 사용되며, 수치 범위가 maximum보다 작거나 같아야 한다는 것을 나타낸다
    exclusiveMaximum
    만약 maximum과 exclusiveMaximum이 동시에 존재하고 exclusiveMaximum의 값이true라면, 수치 범위는 maximum보다 작을 수 있음을 나타낸다
    multipleOf
    값을 제한하는 데 사용되며, 값은 multiple Of에서 지정한 값으로 정리되어야 합니다.
    maxLength
    문자열 형식 데이터의 최대 길이
    minLength
    문자열 형식 데이터의 최소 길이
    pattern
    정규 표현식 제약 문자열 형식 데이터 사용하기
    여기서 type의 일반 수치는 다음과 같습니다.
    type 값
    해당하는 Java 데이터 유형
    array
    java.util.List
    boolean
    java.lang.Boolean
    integer
    int(java.lang.Integer)
    number
    float(java.lang.Float) 또는 int
    null
    null
    object
    java.lang.Object
    string
    java.lang.String
    만약 위의 키워드의 의미를 잘 알고 있다면 JSON Schema의 내용을 읽는 것도 더 이상 어렵지 않을 것이다. 심지어는 JSON Schema 파일을 직접 써 볼 수도 있다.
    4. JSON Schema 온라인 도구
    JSON Schema에는 다음과 같은 온라인 보조 도구가 많습니다.
  • JSON과 대응하는 JSON Schema에 따라 데이터의 정확성을 검사한다.http://json-schema-validator.herokuapp.com/
  • JSON 데이터에 따라 해당하는 JSON Schema 데이터를 생성합니다.https://jsonschema.net/#/editor
  • JSON 데이터에 따라 해당하는 JSON Schema 데이터를 생성합니다.http://schemaguru.snowplowanalytics.com/#
  • 좋은 웹페이지 즐겨찾기