๐ŸนJSON โ†’ Go ๊ตฌ์กฐ์ฒด(struct) ์ƒ์„ฑ๊ธฐ

JSON ์—์„œ ํƒœ๊ทธ ๋ถ™์€ Go ๊ตฌ์กฐ์ฒด ๋ฐ”๋กœ ์ƒ์„ฑ

JSON ๊ฐ’์—์„œ Go ํƒ€์ž…์„ ์ •ํ•˜๋Š” ๊ทœ์น™

JSON ๊ฐ’Go ํƒ€์ž…๋น„๊ณ 
๋ฌธ์ž์—ดstring๊ทธ๋Œ€๋กœ
์ฐธยท๊ฑฐ์ง“bool๊ทธ๋Œ€๋กœ
์†Œ์ˆ˜์  ์—†๋Š” ์ˆซ์žint ยท int64๊ณ ๋ฅธ ํƒ€์ž…
์†Œ์ˆ˜์  ์žˆ๋Š” ์ˆซ์žfloat64๊ทธ๋Œ€๋กœ
๊ฐ์ฒด์ค‘์ฒฉ ๊ตฌ์กฐ์ฒดํ‚ค ์ด๋ฆ„์œผ๋กœ ํƒ€์ž… ์ƒ์„ฑ
๋ฐฐ์—ด[]์š”์†Œํƒ€์ž…์š”์†Œ๋ฅผ ํ•ฉ์ณ ์ถ”๋ก 
null์ถ”๋ก  ๋ถˆ๊ฐ€any ๋˜๋Š” interface{}
๋นˆ ๋ฐฐ์—ด์ถ”๋ก  ๋ถˆ๊ฐ€[]any ๋กœ ๋‘ 
ํƒ€์ž…์ด ์„ž์ธ ๋ฐฐ์—ด์ถ”๋ก  ๋ถˆ๊ฐ€any ๋กœ ๋‘ 

nullยท๋นˆ ๋ฐฐ์—ดยทํƒ€์ž…์ด ์„ž์ธ ๋ฐฐ์—ด์€ ๊ฐ’๋งŒ ๋ณด๊ณ  ํƒ€์ž…์„ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ถ”๋ก ํ•˜์ง€ ์•Š๊ณ  ๊ทธ ์ž๋ฆฌ๋ฅผ ๊ฒฐ๊ณผ ์•„๋ž˜์— ๊ฒฝ๋กœ๋กœ ์ ์–ด ์ค€๋‹ค. ํ•„๋“œ ์ด๋ฆ„์€ ๋‚ด๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๊ฒŒ ๋ฐ”๊พธ๊ณ , Go ํ‚ค์›Œ๋“œ์™€ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ์ฒซ ๊ธ€์ž๋ฅผ ์˜ฌ๋ฆฐ๋‹ค. ์•ฝ์–ด๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์“ฐ๋Š” ๊ฒƒ์€ Go ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ด€ํ–‰์ด๋ฉฐ ๊ทœ๊ฒฉ์ด ์ •ํ•œ ๊ทœ์น™์€ ์•„๋‹ˆ๋‹ค.

๊ด€๋ จ๋œ ๋„๊ตฌ

JSON ์‘๋‹ต์—์„œ Go ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฝ‘์•„๋‚ด๊ธฐ

API ์‘๋‹ต์„ ๋ถ™์—ฌ ๋„ฃ์œผ๋ฉด ํ•„๋“œ ์ด๋ฆ„๊ณผ ํƒ€์ž…, json ํƒœ๊ทธ๊ฐ€ ๋ถ™์€ Go ๊ตฌ์กฐ์ฒด๊ฐ€ ๋ฐ”๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค. ์ค‘์ฒฉ๋œ ๊ฐ์ฒด๋Š” ๋ณ„๋„ ํƒ€์ž…์œผ๋กœ ๋–ผ์–ด ๋‚ด๊ณ , ๊ฐ์ฒด ๋ฐฐ์—ด์€ ๋ชจ๋“  ์š”์†Œ์˜ ํ•„๋“œ๋ฅผ ํ•ฉ์ณ์„œ ์ถ”๋ก ํ•˜๋ฏ€๋กœ ์–ด๋–ค ์š”์†Œ์—๋งŒ ์žˆ๋Š” ํ•„๋“œ๋„ ๋น ์ง€์ง€ ์•Š๋Š”๋‹ค. ๊ฒฐ๊ณผ๋Š” gofmt ๊ฐ€ ์ •๋ ฌํ•œ ๋ชจ์–‘๊ณผ ๊ฐ™๊ฒŒ ๋งž์ถฐ ๋‘์—ˆ๋‹ค.

ํƒ€์ž…์€ ๊ฐ’์˜ ๋ชจ์–‘์œผ๋กœ ์ •ํ•œ๋‹ค. ์†Œ์ˆ˜์ ์ด ์—†๋Š” ์ˆซ์ž๋Š” int ๋‚˜ int64 ์ค‘์—์„œ ๊ณ ๋ฅธ ํƒ€์ž…, ์†Œ์ˆ˜์ ์ด ์žˆ์œผ๋ฉด float64 ๊ฐ€ ๋œ๋‹ค. ๋ฌธ์ œ๋Š” nullยท๋นˆ ๋ฐฐ์—ดยทํƒ€์ž…์ด ์„ž์ธ ๋ฐฐ์—ด์ด๋‹ค. ์ด ์„ธ ๊ฐ€์ง€๋Š” ๊ฐ’๋งŒ ๋ณด๊ณ ๋Š” ํƒ€์ž…์„ ์•Œ ์ˆ˜ ์—†์–ด ์ถ”๋ก ํ•˜์ง€ ์•Š๊ณ , any ๋˜๋Š” interface{} ๋กœ ๋‘๋ฉด์„œ ๊ทธ ์ž๋ฆฌ๋ฅผ ๊ฒฝ๋กœ๋กœ ์ ์–ด ์ค€๋‹ค. 2026๋…„ 10์›” ๊ธฐ์ค€์œผ๋กœ ์ถ”์ธกํ•ด์„œ ์ฑ„์šฐ๋Š” ์ชฝ๋ณด๋‹ค ๋น„์›Œ ๋‘๊ณ  ์•Œ๋ฆฌ๋Š” ์ชฝ์ด ์•ˆ์ „ํ•˜๋‹ค๊ณ  ๋ณด์•˜๋‹ค.

ํ•„๋“œ ์ด๋ฆ„์€ ํŒจํ‚ค์ง€ ๋ฐ–์—์„œ ์“ฐ๋„๋ก ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๊ฒŒ ๋ฐ”๊พธ๊ณ , ๊ฐ™์€ ์ด๋ฆ„์ด ๊ฒน์น˜๋ฉด ๋’ค์— ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ธ๋‹ค. ์•ฝ์–ด๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์“ฐ๋Š” ํ‘œ๊ธฐ๋Š” Go ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ด€ํ–‰์ด๋ผ ์„ ํƒ์œผ๋กœ ๋’€๋‹ค. ์ด ๋„๊ตฌ๋Š” Go ์ „์šฉ์ด๋ฉฐ ๋‹ค๋ฅธ ์–ธ์–ด์˜ ๋ชจ๋ธ ํด๋ž˜์Šค๋Š” ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

null ์ธ ํ•„๋“œ๋Š” ์™œ ํƒ€์ž…์„ ์•ˆ ์ •ํ•ด ์ค„๊นŒ?

null ์€ ๊ทธ ๊ฐ’์ด ๋ฌด์—‡์ด์—ˆ๋Š”์ง€ ์•Œ๋ ค ์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‹ค๋งŒ ๊ฐ์ฒด ๋ฐฐ์—ด์—์„œ ์–ด๋–ค ์š”์†Œ๋Š” null ์ด๊ณ  ๋‹ค๋ฅธ ์š”์†Œ์— ๊ฐ’์ด ์žˆ์œผ๋ฉด ๊ทธ ๊ฐ’์œผ๋กœ ํƒ€์ž…์„ ์ •ํ•˜๊ณ  ํฌ์ธํ„ฐ๋กœ ํ‘œ์‹œํ•œ๋‹ค.

int ๊ณผ int64 ์ค‘ ๋ฌด์—‡์„ ๊ณ ๋ฅผ๊นŒ?

JSON ์ˆซ์ž์—๋Š” ๋ฒ”์œ„ ์ œํ•œ์ด ์—†์œผ๋ฏ€๋กœ ํฐ ๊ฐ’์ด ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์‘๋‹ต์ด๋ฉด int64 ๊ฐ€ ์•ˆ์ „ํ•˜๋‹ค. ์‹œ๊ฐ„ ๊ฐ’์ด๋‚˜ ์‹๋ณ„์ž์ฒ˜๋Ÿผ ์ž๋ฆฟ์ˆ˜๊ฐ€ ํฐ ํ•„๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ํŠนํžˆ ๊ทธ๋ ‡๋‹ค.

ํฌ์ธํ„ฐ์™€ omitempty ๋Š” ์™œ ๊ฐ™์ด ๋ถ™์ผ๊นŒ?

๊ฐ’์ด ์—†๋Š” ์ƒํƒœ์™€ 0ยท๋นˆ ๋ฌธ์ž์—ด์„ ๊ตฌ๋ณ„ํ•˜๋ ค๋ฉด ํฌ์ธํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๊ณ , ๋น„์–ด ์žˆ์„ ๋•Œ JSON ์—์„œ ์•„์˜ˆ ๋นผ๋ ค๋ฉด omitempty ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋‘˜์„ ๊ฐ™์ด ์จ์•ผ ์™•๋ณต์ด ๋งž๋Š”๋‹ค.