๐Ÿ›๏ธJSON โ†’ ๋ชจ๋ธ ํด๋ž˜์Šค ์ƒ์„ฑ๊ธฐ

JSON ์„ TypeScriptยทPythonยทJava ๋ชจ๋ธ๋กœ ๋ณ€ํ™˜

JSON ๊ฐ’์—์„œ ์ •ํ•˜๋Š” ํƒ€์ž…

JSON ๊ฐ’TypeScriptPythonJava
๋ฌธ์ž์—ดstringstrString
์ฐธยท๊ฑฐ์ง“booleanboolBoolean
์ •์ˆ˜numberintLong
์†Œ์ˆ˜numberfloatDouble
๊ฐ์ฒด์ค‘์ฒฉ interface์ค‘์ฒฉ dataclass์ค‘์ฒฉ record
๋ฐฐ์—ดT[]list[T]List<T>
null ยท ๋นˆ ๋ฐฐ์—ดunknownAnyObject
์ผ๋ถ€๋งŒ ์žˆ๋Š” ํ•„๋“œname?: TOptional[T] = None๋ฐ•์‹ฑ ํƒ€์ž…

์ง€์› ์–ธ์–ด๋Š” ์œ„ ์„ ํƒ ๋ชฉ๋ก์˜ TypeScriptยทPythonยทJava ์„ธ ๊ฐ€์ง€๋ฟ์ด๋‹ค. Go ๊ตฌ์กฐ์ฒด๋Š” ์ด ๋„๊ตฌ๊ฐ€ ๋งŒ๋“ค์ง€ ์•Š์œผ๋ฉฐ ์ „์šฉ ๋„๊ตฌ๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค. Python ์€ ์ด๋ฆ„์„ snake_case ๋กœ ๋ฐ”๊พธ๋ฏ€๋กœ ์›๋ž˜ ํ‚ค๋ฅผ ์ฃผ์„์œผ๋กœ ๋‚จ๊ธฐ๊ณ , Java ๋Š” record ๋กœ ๋งŒ๋“ค์–ด ํŒŒ์ผ ์ด๋ฆ„์„ ์ตœ์ƒ์œ„ ํƒ€์ž…๊ณผ ๊ฐ™๊ฒŒ ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค.

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

JSON ์‘๋‹ต์„ ๋ชจ๋ธ ํด๋ž˜์Šค๋กœ ์˜ฎ๊ธฐ๊ธฐ

์–ธ์–ด๋ฅผ ๊ณ ๋ฅด๊ณ  JSON ์„ ๋ถ™์—ฌ ๋„ฃ์œผ๋ฉด TypeScript interface, Python dataclass, Java record ์ค‘ ํ•˜๋‚˜๋กœ ๋ชจ๋ธ ์ฝ”๋“œ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. ์ค‘์ฒฉ๋œ ๊ฐ์ฒด๋Š” ๋ณ„๋„ ํƒ€์ž…์œผ๋กœ ๋–ผ์–ด ๋‚ด๊ณ , ๊ฐ์ฒด ๋ฐฐ์—ด์€ ๋ชจ๋“  ์š”์†Œ์˜ ํ•„๋“œ๋ฅผ ํ•ฉ์ณ์„œ ์ถ”๋ก ํ•˜๋ฏ€๋กœ ์–ด๋–ค ์š”์†Œ์—๋งŒ ์žˆ๋Š” ํ•„๋“œ๋„ ๋น ์ง€์ง€ ์•Š๋Š”๋‹ค.

์–ธ์–ด๋งˆ๋‹ค ๊ฑธ๋ฆฌ๋Š” ์ง€์ ์ด ๋‹ค๋ฅด๋‹ค. Python ์€ ๊ธฐ๋ณธ๊ฐ’์ด ์žˆ๋Š” ํ•„๋“œ๊ฐ€ ์•ž์— ์˜ค๋ฉด ํด๋ž˜์Šค ์ •์˜ ์ž์ฒด๊ฐ€ ์‹คํŒจํ•˜๋ฏ€๋กœ ์„ ํƒ ํ•„๋“œ๋ฅผ ๋’ค๋กœ ๋ชจ์œผ๊ณ , ํ‚ค๋ฅผ snake_case ๋กœ ๋ฐ”๊ฟ€ ๋•Œ ์›๋ž˜ ํ‚ค๋ฅผ ์ฃผ์„์œผ๋กœ ๋‚จ๊ธด๋‹ค. Java ๋Š” record ๋กœ ๋งŒ๋“ค๋˜ ํ•œ ํŒŒ์ผ์— public ํƒ€์ž…์ด ํ•˜๋‚˜๋งŒ ์˜ฌ ์ˆ˜ ์žˆ์–ด ์ตœ์ƒ์œ„๋งŒ public ์œผ๋กœ ๋‘”๋‹ค. TypeScript ๋Š” ์‹๋ณ„์ž๋กœ ์“ธ ์ˆ˜ ์—†๋Š” ํ‚ค๋ฅผ ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ผ๋‹ค. 2026๋…„ 10์›” ๊ธฐ์ค€์œผ๋กœ ์„ธ ์–ธ์–ด์˜ ์ถœ๋ ฅ์€ ๊ฐ๊ฐ ์ปดํŒŒ์ผ๊ณผ ์‹คํ–‰์œผ๋กœ ํ™•์ธํ–ˆ๋‹ค.

null ๊ณผ ๋นˆ ๋ฐฐ์—ด, ํƒ€์ž…์ด ์„ž์ธ ๋ฐฐ์—ด์€ ๊ฐ’๋งŒ ๋ณด๊ณ  ํƒ€์ž…์„ ์•Œ ์ˆ˜ ์—†์–ด ์ถ”์ธกํ•˜์ง€ ์•Š๊ณ  ๊ทธ ์ž๋ฆฌ๋ฅผ ๊ฒฝ๋กœ๋กœ ์•Œ๋ ค ์ค€๋‹ค. ์ง€์› ์–ธ์–ด๋Š” ์„ ํƒ ๋ชฉ๋ก์˜ ์„ธ ๊ฐ€์ง€๋ฟ์ด๊ณ  Go ๊ตฌ์กฐ์ฒด๋Š” ๋‹ค๋ฃจ์ง€ ์•Š๋Š”๋‹ค. ์—ญ์ง๋ ฌํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์ •์ด๋‚˜ ๊ฒ€์ฆ ์ฝ”๋“œ๋„ ๋„ฃ์ง€ ์•Š๋Š”๋‹ค.

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

์™œ ์„ธ ์–ธ์–ด๋งŒ ์ง€์›ํ• ๊นŒ?

์‹ค์ œ๋กœ ๋งŒ๋“ค์–ด ์ปดํŒŒ์ผ๊ณผ ์‹คํ–‰์œผ๋กœ ํ™•์ธํ•œ ์ถœ๋ ฅ๋งŒ ์˜ฌ๋ ธ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ชฉ๋ก์— ์—†๋Š” ์–ธ์–ด๋Š” ์ด ๋„๊ตฌ๊ฐ€ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค. Go ๊ตฌ์กฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๋ฉด Go ์ „์šฉ ๋„๊ตฌ๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค.

Python ์—์„œ ์„ ํƒ ํ•„๋“œ๊ฐ€ ๋’ค๋กœ ๋ฐ€๋ฆฌ๋Š” ์ด์œ ๋Š”?

dataclass ๋Š” ๊ธฐ๋ณธ๊ฐ’์ด ์žˆ๋Š” ํ•„๋“œ ๋’ค์— ๊ธฐ๋ณธ๊ฐ’ ์—†๋Š” ํ•„๋“œ๊ฐ€ ์˜ค๋ฉด ์ •์˜ ๋‹จ๊ณ„์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค. ๊ทธ๋ž˜์„œ Optional ํ•„๋“œ๋ฅผ ๋ชจ๋‘ ๋’ค๋กœ ๋ชจ์•„ ๋‘”๋‹ค.

Java ๋Š” ์™œ ๋ฐ•์‹ฑ ํƒ€์ž…์„ ๊ธฐ๋ณธ์œผ๋กœ ์“ธ๊นŒ?

JSON ๊ฐ’์€ null ์ผ ์ˆ˜ ์žˆ๊ณ  int ๋‚˜ long ๊ฐ™์€ ๊ธฐ๋ณธํ˜•์€ null ์„ ๋‹ด์ง€ ๋ชปํ•œ๋‹ค. ๋ฐ•์‹ฑ ํƒ€์ž…์„ ๋„๋ฉด null ์ด ์˜ค๋Š” ์ˆœ๊ฐ„ ์—ญ์ง๋ ฌํ™”๊ฐ€ ์‹คํŒจํ•˜๋ฏ€๋กœ ๊ธฐ๋ณธ์„ ๋ฐ•์‹ฑ์œผ๋กœ ๋‘์—ˆ๋‹ค.