Home  >  Article  >  Backend Development  >  How is go's datatypes.JSON data type described in the openAPI specification?

How is go's datatypes.JSON data type described in the openAPI specification?

WBOY
WBOYforward
2024-02-11 08:54:08431browse

How is gos datatypes.JSON data type described in the openAPI specification?

php editor Baicao introduces to you how the datatypes.JSON data type of go is described in the openAPI specification. In the openAPI specification, Schema Object is used to describe data types. For the datatypes.JSON data type in go, it can be described using type as "string" and format as "json". This allows you to explicitly specify the data type of the field as a string in JSON format. In addition, you can also use the example field to provide example values ​​to help developers better understand the structure and usage of this data type. Through reasonable use of the openAPI specification, the datatypes.JSON data type in go can be accurately described, providing developers with clear interface documents and data type definitions.

Question content

I have a golang-gin project. There is such a structure:

type Value struct { 
    gorm.Model 
    QuesAns       datatypes.JSON json:"ques_ans" 
}

QuesAns The field should have JSON of any of these three types.

"ques_ans": {
    "receiver.ques": [
         "Q1",
         "Q2"
     ], 
    "receiver.ans": [
         "Ans1",
         "Ans2",
         "Ans3" 
     ]
 }
"ques_ans": {
     "id": "1",
     "receiver.sid": "2743dfjfh87",
     "receiver.ques": [
         "Q1",
         "Q2",
         "Q3" 
     ] 
 }
"ques_ans": {
     "receiver.ques_key": [
         "1",
         "2" 
     ],
     "receiver.ans_key": [
         "13",
         "20" 
     ] 
 }

How would you describe integrating the Open API specification?

I tried multiple types but couldn't synchronize them all because JSON can be of different types and only these three types work.

Solution

Okay! This is how I solved it:

components:
  schemas:
    Value:
      type: object
      properties:
        ques_ans:
          oneOf:
            - $ref: '#/components/schemas/Type1'
            - $ref: '#/components/schemas/Type2'
            - $ref: '#/components/schemas/Type3'
    Type1:
      type: object
      properties:
        receiver.ques:
          type: array
          items:
            type: string
        receiver.ans:
          type: array
          items:
            type: string
    Type2:
      type: object
      properties:
        id:
          type: string
        receiver.sid:
           type: string
        receiver.ques:
          type: array
          items:
            type: string
    Type3:
      type: object
      properties:
        receiver.ques_key:
          type: array
          items:
            type: string
        receiver.ans_key:
          type: array
          items:
            type: string

The above is the detailed content of How is go's datatypes.JSON data type described in the openAPI specification?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:stackoverflow.com. If there is any infringement, please contact admin@php.cn delete