Go로 JSON 데이터를 다루다 보면 .. map 을 이용해 Unmarshal 등을 해도 상관은 없지만. 이래저래 불편합니다. 그래서 보통은 구조체를 생성해서 처리를 합니다. 이때 JSON 구조가 단순하다면야 직접 struct 를 잡아서 작성하면 되지만 복잡한 구조의 JSON 데이터의 경우 구조체 만드는것도 여간 귀찮은 일이 아니지요..
그럴때 사용하기 좋은 사이트가 있습니다.

JSON-to-Go: Convert JSON to Go instantly
This tool instantly converts JSON into a Go type definition. Paste a JSON structure on the left and the equivalent Go type will be generated to the right, which you can paste into your program. The script has to make some assumptions, so double-check the output!
JSON
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
위 JSON 데이터는 json.org 의 JSON Example 중 하나입니다. 이런 JSON 데이터를 입력하면.
Go
type Autogenerated struct {
Glossary struct {
Title string `json:"title"`
Glossdiv struct {
Title string `json:"title"`
Glosslist struct {
Glossentry struct {
ID string `json:"ID"`
Sortas string `json:"SortAs"`
Glossterm string `json:"GlossTerm"`
Acronym string `json:"Acronym"`
Abbrev string `json:"Abbrev"`
Glossdef struct {
Para string `json:"para"`
Glossseealso []string `json:"GlossSeeAlso"`
} `json:"GlossDef"`
Glosssee string `json:"GlossSee"`
} `json:"GlossEntry"`
} `json:"GlossList"`
} `json:"GlossDiv"`
} `json:"glossary"`
}
이런 Go struct 구조체를 만들어 줍니다. 구조체 이름정도 변경하시고 사용 하시면 되겠습니다.
이 구조체를 가지고 json.Marshal, Unmarshal 등에 사용하시면 되겠습니다.
JSON to Go – Visual Studio Marketplace
Extension for Visual Studio Code – Convert JSON data to Go struct
VSCode 용 플러그인도 따로 있으니 참고바랍니다.