JSON-TO-GO를 사용하면 GO 구조체 정의가 매우 간단합니다!

14538 단어 5

Teratail 질문 API



프로그래밍에 관한 질문을 할 수 있는 Teratail 에서는, API 를 제공하고 있습니다.

질문 일람에서는, 아래와 같은 리스폰스가 돌아온다고 하는 것입니다.

이것을 하나하나 Go의 구조체를 작성하는 것은 상당히 시간이 걸린다. .
{
  "meta": {
    "message": "success",
    "total_page": 1,
    "page": 1,
    "limit": 10,
    "hit_num": 2
  },
  "questions": [
    {
      "id": 10364,
      "title": "インデントにタブを使うことのデメリット",
      "created": "2015-05-27 04:49:55",
      "modified": "2015-06-22 15:17:06",
      "count_reply": 11,
      "count_clip": 11,
      "count_pv": 0,
      "is_beginner": false,
      "is_accepted": false,
      "is_presentation": false,
      "tags": [
        "Eclipse",
        "タブ",
        "プログラミング言語",
        "コーディング規約"
      ],
      "user": {
        "display_name": "miu_ras",
        "photo": "https://cdn.teratail.com/uploads/avatars/15047/4DVbsgOW_thumbnail.jpg",
        "score": 101
      }
    },
    {
      "id": 9399,
      "title": "mysqlに格納された配列データで絞り込みをかけることはできるのでしょうか?",
      "created": "2015-05-04 15:59:29",
      "modified": "2015-05-04 15:59:29",
      "count_reply": 2,
      "count_clip": 0,
      "count_pv": 0,
      "is_beginner": true,
      "is_accepted": true,
      "is_presentation": false,
      "tags": [
        "MySQL"
      ],
      "user": {
        "display_name": "mendosa",
        "photo": "https://tt4.leverages.org/uploads/avatars/13696/4WwsssAn_thumbnail.jpg",
        "score": 7
      }
    }
  ]
}

거기서 사용하는 것이, JSON-To-GO .

바로 JSON-TO-GO에 붙여넣기



단순히 복사만 하면 구조체를 만들어 온다



인라인으로 중첩하면


type AutoGenerated struct {
    Meta struct {
        Message   string `json:"message"`
        TotalPage int    `json:"total_page"`
        Page      int    `json:"page"`
        Limit     int    `json:"limit"`
        HitNum    int    `json:"hit_num"`
    } `json:"meta"`
    Questions []struct {
        ID             int      `json:"id"`
        Title          string   `json:"title"`
        Created        string   `json:"created"`
        Modified       string   `json:"modified"`
        CountReply     int      `json:"count_reply"`
        CountClip      int      `json:"count_clip"`
        CountPv        int      `json:"count_pv"`
        IsBeginner     bool     `json:"is_beginner"`
        IsAccepted     bool     `json:"is_accepted"`
        IsPresentation bool     `json:"is_presentation"`
        Tags           []string `json:"tags"`
        User           struct {
            DisplayName string `json:"display_name"`
            Photo       string `json:"photo"`
            Score       int    `json:"score"`
        } `json:"user"`
    } `json:"questions"`
}

중첩하지 않을 경우


type AutoGenerated struct {
    Meta      Meta        `json:"meta"`
    Questions []Questions `json:"questions"`
}
type Meta struct {
    Message   string `json:"message"`
    TotalPage int    `json:"total_page"`
    Page      int    `json:"page"`
    Limit     int    `json:"limit"`
    HitNum    int    `json:"hit_num"`
}
type User struct {
    DisplayName string `json:"display_name"`
    Photo       string `json:"photo"`
    Score       int    `json:"score"`
}
type Questions struct {
    ID             int      `json:"id"`
    Title          string   `json:"title"`
    Created        string   `json:"created"`
    Modified       string   `json:"modified"`
    CountReply     int      `json:"count_reply"`
    CountClip      int      `json:"count_clip"`
    CountPv        int      `json:"count_pv"`
    IsBeginner     bool     `json:"is_beginner"`
    IsAccepted     bool     `json:"is_accepted"`
    IsPresentation bool     `json:"is_presentation"`
    Tags           []string `json:"tags"`
    User           User     `json:"user"`
}

좋은 웹페이지 즐겨찾기