모두의 프린터는 어떠한 경우에도 회원가입, 카드결제를 요구하지 않습니다.

JSON to GO

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

그럴때 사용하기 좋은 사이트가 있습니다.

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 등에 사용하시면 되겠습니다.

VSCode 용 플러그인도 따로 있으니 참고바랍니다.

%d