programing

사양에서 JSON 데이터를 설명하는 방법은 무엇입니까?

javamemo 2023. 3. 31. 21:20
반응형

사양에서 JSON 데이터를 설명하는 방법은 무엇입니까?

사양에서 JSON 데이터를 설명하는 가장 좋은 방법은 무엇입니까?

나는 과거에 '단어 있는' 설명이 있는 예시를 사용했지만, 그것은 부정확한 느낌이다.

초기 JSON 스키마 표준이 있는 것 같지만, 그다지 활발한 프로젝트는 아닌 것 같습니다.다른 방법은요?


갱신】며칠 고민한 결과, 변환 규약을 이용한 bmargulies 제안이 마음에 듭니다.이 케이스의 JSON 문서는 에서 나온 것입니다.NET Web Services C# 클래스 구문을 사용하여 스키마를 간단히 문서화합니다.이것은 완전히 엄격하지는 않을 수도 있지만, 관련된 모든 사람들은 그것을 이해할 것이고, 사례와 함께 가능한 한 빨리 메시지를 전달할 것입니다.

js-schema JavaScript 라이브러리를 추천합니다.그 뒤에 숨겨진 주된 동기는 당신이 질문에서 설명한 것과 같았다.이것은 JSON 스키마(또는 필요한 경우 사양)를 설명하는 간단하고 알기 쉬운 표기법입니다.

JSON Schema 에 기재되어 있는 스키마의 예를 다음에 나타냅니다.

{
  "type":"object",
  "properties":{
    "id":{
      "type":"number",
      "required":true
    },
    "name":{
      "type":"string",
      "required":true
    },
    "price":{
      "type": "number",
      "minimum":0,
      "required":true
    },
    "tags":{
      "type":"array",
      "items":{
        "type":"string"
      }
    }
  }
}

js-discription과 동일한 스키마 설명:

{
  "id"    : Number,
  "name"  : String,
  "price" : Number.min(0),
  "?tags" : Array.of(String)
}

라이브러리는 스키마에 대해 개체를 검증하고, 지정된 스키마에 적합한 랜덤 개체를 생성하며, JSON 스키마와 직렬화/직렬화/직렬화를 수행할 수 있습니다.

오래된 질문인 건 알지만 다른 사람에게 도움이 될 수도 있습니다.JSON 데이터를 기술하는 방법을 찾고 있을 때 Order를 우연히 발견했습니다.1면의 요약은 다음과 같습니다.

Order는 JSON을 설명하는 텍스트 형식입니다.Order는 JSONSchema로 컴파일할 수 있습니다.읽기 쉽고 쓰기 쉽도록 설계되어 있습니다.

저도 그렇게 생각합니다만, 지금까지는 비교적 단순한 구조로 해 본 적이 있습니다.

확장 BNF를 사용하는 건 어때요?

PERSON <- { "firstname": FIRSTNAMES, "lastname": LASTNAME, "age": AGE, "version": VERSION, "parents" <- PARENTS }

FIRSTNAMES <- [ FIRSTNAME+ ]

FIRSTNAME <- STRING

LASTNAME <- STRING

PARENTS <- [ PERSON{0,2} ]

AGE <- INTEGER

VERSION <- 1 | 2

INTEGER나 STRING과 같은 원자 유형 설명의 의미를 정의해야 합니다.사전에 하드 코드화되지 않은 키를 추가할 경우 다음과 같이 정의합니다.

BREADLOOKUP <- { (TYPE : HOWMANY)+ }

TYPE <- "white" | "dark" | "french" | "croissant"

HOWMANY <- POSITIVE-INTEGER

이렇게 하면

{ "white": 5, 
  "french": 2
}

정규 표현과 BNF는 모두 매우 잘 알려져 있기 때문에, 이것은 매우 쉬운 방법입니다. ?,+,*,{n},{min,max}(정규화에서 추출한) 몇 가지 요소를 지정하는 쉬운 방법이며, 나머지는 거의 순수한 BNF입니다.

충분히 엄격히 했다면 검증자가 파싱할 수 있을 거예요

W3C XML 스키마 또는 RelaxNG와 같이 덜 추한 스키마를 변환 규칙과 결합할 수 있습니다.

언급URL : https://stackoverflow.com/questions/3213398/how-to-describe-json-data-in-a-spec

반응형