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

WBOY
Release: 2024-02-11 08:54:08
forward
478 people have browsed it

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" 
}
Copy after login

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

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

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
Copy after login

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!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!