2016-12-01 2 views
4

REST API에서 많은 JSON 파일을 생성했습니다.JSON을 JSON으로 변환합니다. Swagger 2.0과 호환되는 스키마 초안 4

이 API에 대해 Swagger 2.0 정의를 작성했으며 응답에 해당 스키마를 제공해야합니다.

주요 문제 :이 JSON 파일에는 많은 속성이 있습니다. 너무 많은 시간이 걸릴 것이고 스키마를 수동으로 작성하면 많은 실수를 범할 것입니다. 그리고 그것은 내가 설명 할 필요가있는 유일한 API가 아닙니다. 내가 틀리지 않는 경우가 JSON 스키마에 JSON 변환하는 몇 가지 도구가 알고 있지만

는 자신감은 따라서 하나의 레벨 도구 반면 난 단지 트리 구조로 생산하고 찾았습니다 다른 개체 정의에 $ 심판이있다 스키마. 내 질문 : JSON (또는 JSON 스키마)을 Swagger 2.0 호환 도구로 변환 할 수있는 도구가 있습니까?

참고 : 저는 YAML에서 일하고 있지만 문제가되지는 않습니까? 예를 들어

, 내가 필요한 : 나에게주는 무슨 http://jsonschema.net/#/

[ 
    { 
    "dateKey": "20161110", 
    "stkLvls": [ 
     { 
     "stkOpKey": "0", 
     "stkUnitType": "U", 
     "stkDateTime": "20161110T235010.240+0100", 
     "stkUnitQty": 30 
     } 
    ] 
    }, 
    { 
    "dateKey": "20161111", 
    "stkLvls": [ 
     { 
     "stkOpKey": "0", 
     "stkUnitType": "U", 
     "stkDateTime": "20161111T231245.087+0100", 
     "stkUnitQty": 21 
     } 
    ] 
    } 
    ] 

을하지만, : 내 JSON 문서에 대한

List of Movements: 
    type: "array" 
    items: 
     $ref: "#/definitions/Movement" 
    Movement: 
    properties: 
     dateKey: 
     type: "string" 
     movement: 
     $ref: "#/definitions/Stock" 
    additionalProperties: false 
    Stock: 
    properties: 
     stkUnitQty: 
     type: "string" 
     stkDateTime: 
     type: "string" 
     stkUnitType: 
     type: "string" 
     stkOpKey: 
     type: "string" 
    additionalProperties: false 

--- 
"$schema": http://json-schema.org/draft-04/schema# 
type: array 
items: 
    type: object 
    properties: 
    dateKey: 
     type: string 
    stkLvls: 
     type: array 
     items: 
     type: object 
     properties: 
      stkOpKey: 
      type: string 
      stkUnitType: 
      type: string 
      stkDateTime: 
      type: string 
      stkUnitQty: 
      type: integer 
     required: 
     - stkOpKey 
     - stkUnitType 
     - stkDateTime 
     - stkUnitQty 
    required: 
    - dateKey 
    - stkLvls 

내가 그에게 새로운 해요 , 그러나 호기심, 깊이 설명하는 것을 망설이지 말라.

도움을 주셔서 감사합니다. 나는 내가 잘못 아니에요 경우,이 JSON 스키마에 JSON 변환하는 몇 가지 도구가 알고 있지만

답변

2

는 자신감은 다른 개체에 대한 심판이 있는 정의를 따라서 하나 개의 수준이 $를 가지고

당신에게 착각 한 것이다. Swagger는 supported subset 만 사용하는 유효한 v4 JSON 스키마를 존중합니다.

스키마 객체는 ... JSON 스키마 사양 초안 4를 기반으로 의 미리 정의 된 하위 집합을 사용합니다. 이 하위 집합의 맨 위에는이 표준에서 제공하는 확장이 제공되어 더 완전한 문서를 허용합니다.

JSON 스키마의 지원되는 부분과 지원되지 않는 비트 및 swagger가 확장 한 비트를 나열합니다.

+0

하이 톰과 대답 주셔서 감사합니다 :

{ "id": 1, "name": "A green door", "price": 12, "testBool": false, "tags": [ "home", "green" ] } 

은이를 생성합니다. https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v2.0/yaml/uber.yaml에서 나는 정의 표식에 단 하나의 레벨 만 있다는 것을 알 수 있습니다. 다른 유형을 사용할 필요가있을 때, 그들은 $ ref : '#/definitions/Activity'를 다른 유형으로 만듭니다. 하지만 JSON 스키마 v4에서는 필수는 아닙니다. 어떤 해결책이 있습니까? – Cwellan

7

나는 또한 변환기 도구가 필요하며이를 알게되었습니다. 지금까지 꽤 잘 작동하는 것 같습니다. JSON 및 YAML 형식을 모두 수행합니다.(자신의 샘플)이 JSON을 감안할 때

https://swagger-toolbox.firebaseapp.com/

:

{ 
    "required": [ 
     "id", 
     "name", 
     "price", 
     "testBool", 
     "tags" 
    ], 
    "properties": { 
     "id": { 
      "type": "number" 
     }, 
     "name": { 
      "type": "string" 
     }, 
     "price": { 
      "type": "number" 
     }, 
     "testBool": { 
      "type": "boolean" 
     }, 
     "tags": { 
      "type": "array", 
      "items": { 
       "type": "string" 
      } 
     } 
    } 
}