์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
1. ๊ฐœ์š”2. ๊ตฌ์กฐ3. ํŠน์ง•4. ๋‹จ์ 5. JSONP


๊ณต์‹ ํ™ˆํŽ˜์ด์ง€

JavaScript Object Notation[1]

1. ๊ฐœ์š”[ํŽธ์ง‘]

์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์–‘์‹. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด์— ๊ด€๊ณ„ ์—†์ด ํ†ต์ผ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก, ์ผ์ •ํ•œ ํŒจํ„ด์„ ์ง€๋‹Œ ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•ด ๋‚ด๋ณด๋‚ด๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ๊ทธ๋ฅผ ํ•ด์„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ž๊ธฐ๋งŒ์˜ ๋ฐฉ์‹์œผ๋กœ ์˜จ์ „ํžˆ ์ €์žฅ, ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๊ณผ๊ฑฐ ์›น ์ดˆ๊ธฐ ์‹œ์ ˆ๋ถ€ํ„ฐ ์‚ฌ์šฉ๋˜์–ด ์˜จ XML์€ ํ—ค๋”์™€ ํƒœ๊ทธ ๋“ฑ์˜ ์—ฌ๋Ÿฌ ์š”์†Œ๋กœ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง€๊ณ , ์“ธ๋ฐ์—†์ด ์šฉ๋Ÿ‰์„ ์žก์•„๋จน๋Š”๋‹ค๋Š” ๋‹จ์ ์ด ํ•ญ์ƒ ์ง€์ ๋˜์–ด ์™”๋‹ค. ์ด์— ๋Œ€์‘ํ•ด ๊ฐ„๊ฒฐํ•˜๊ณ  ํ†ต์ผ๋œ ์–‘์‹์œผ๋กœ ๊ฐ๊ด‘์„ ๋ฐ›๊ณ  ์žˆ๋Š” ๊ฒƒ์ด JSON์ด๋‹ค.

2. ๊ตฌ์กฐ[ํŽธ์ง‘]

{
    "ํšŒ์‚ฌ": [
        {
           "์ด๋ฆ„": "Apple",
           "์šด์˜์ฒด์ œ": [
               "macOS",
               "iOS"
                       ]
        },
        {
           "์ด๋ฆ„": "Microsoft",
           "์šด์˜์ฒด์ œ": [
               "MS-DOS",
               "Windows"
                       ]
        }
    ]
}

๏ผป๏ผฝ์•ˆ์˜ ๊ฒƒ์€ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐฐ์—ด[2], ๏ฝ›๏ฝ์•ˆ์˜ ๊ฒƒ์€ ์†์„ฑ๋ช…(ํ”ํžˆ ์ด๋ฆ„ํ‘œ๋ผ๊ณ  ํ•œ๋‹ค)์ด ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ๊ฐ์ฒด ์•ˆ์— ๊ฐ์ฒด๋ฅผ ๋„ฃ์„ ์ˆ˜๋„ ์žˆ์–ด์„œ XML์ฒ˜๋Ÿผ ๋ณต์žกํ•œ ๊ตฌ์กฐ ๋˜ํ•œ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค! ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์ง€์›ํ•˜๋Š” ๊ฐ’์€ {}๋กœ ํ‘œ๊ธฐ๋˜๋Š” ๊ฐ์ฒด, []๋กœ ํ‘œ๊ธฐ๋˜๋Š” ๋ฐฐ์—ด, ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ, null์˜ 6๊ฐ€์ง€๊ฐ€ ์ „๋ถ€๋‹ค. ๋˜ํ•œ null์˜ ์กด์žฌ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ, JSON์€ JavaScript ์ด์™ธ์˜ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋  ์ƒํ™ฉ์„ ๋‹ค๋ถ„ํžˆ ๊ณ ๋ คํ•˜๊ณ  ์žˆ๋‹ค.[3]

3. ํŠน์ง•[ํŽธ์ง‘]

๊ทธ๋ž˜๋„ ํ‘œ๋ฉด์ ์œผ๋กœ W3C์˜ ํ‘œ์ค€์€ XML์ธ๋ฐ, ๊ทธ๊ฒƒ๊ณผ๋Š” ๋ฌด๊ด€ํ•˜๊ฒŒ JSON์€ 2009๋…„ ๋ง Ecma์— ์˜ํ•ด ECMAScript5์—์„œ ์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์œผ๋กœ ๋‚ด์žฅ๋˜์–ด ๋ฒ„๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กญ๊ฒŒ ์ถœ์‹œ๋˜๋Š” ๋ธŒ๋ผ์šฐ์ €๋“ค ๊ธฐ์ค€์—์„œ๋Š” DOM์„ ํ†ตํ•ด XML ํŒŒ์‹ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค JavaScript ์—”์ง„์—์„œ JSON์„ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ฐ›๋Š” ์ชฝ์ด ์„ฑ๋Šฅ์œผ๋กœ ๋ณด๋‚˜ ํŠธ๋ž˜ํ”ฝ์œผ๋กœ ๋ณด๋‚˜ ํ›จ์”ฌ ๋” ๋‚˜์€ ์„ ํƒ์ด ๋˜์–ด๋ฒ„๋ ธ๋‹ค. ๊ทธ๋Ÿฐ ๊ด€๊ณ„๋กœ ์›น์—์„œ XML์€ ๋ณธ๊ฒฉ ๊ณ„๋ฅตํ™”๊ฐ€ ์ง„ํ–‰์ค‘...

๊ธฐ๋ณธ์ ์œผ๋กœ JavaScript ๊ฐ์ฒด ํ‘œ๊ธฐ๋ฒ•์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ์›น ๋ธŒ๋ผ์šฐ์ € ๋ ˆ๋ฒจ์—์„œ ์ฐธ ์‰ฝ๊ฒŒ ํ•ด์„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ชจ์–‘๊ณผ ๊ทœ์น™ ์ž์ฒด๊ฐ€ ๋‹จ์ˆœํ•œ ๊ด€๊ณ„๋กœ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ๊ตฌํ˜„ํ•˜๊ธฐ๋„ ์‰ฝ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜๋‚  ์‚ฌ์šฉ๋˜๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ์ง€์›์— ํž˜์ž…์–ด AJAX ๊ตฌํ˜„์—๋„ ์ƒ๋‹นํžˆ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์“ฐ์ธ๋‹ค.

์—„์ฒญ๋‚˜๊ฒŒ ๋‹จ์ˆœํ•˜์ง€๋งŒ ์œ ์—ฐํ•œ ํ‘œ๊ธฐ๋ฒ•์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ธ์–ด์™€ ๋…๋ฆฝ๋œ ํ‘œ์ค€์ ์ธ ๋ฐ์ดํ„ฐ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํ™•์‚ฐ๋˜๊ณ  ์žˆ๋‹ค. ๋ณธ๋ž˜์˜ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ ํ‘œ๊ธฐ์šฉ์œผ๋กœ ๋งˆ๊ฐœ์กฐํ•œ BSON[4]๋„ ์žˆ์œผ๋ฉฐ, NoSQL DB์ค‘ DocumentDB๋“ค์—์„œ๋Š” ๊ทธ๋ƒฅ ํ‘œ์ค€ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์ทจ๊ธ‰๋˜๊ณ  ์žˆ๋‹ค. ์ตœ๊ทผ์—๋Š” NoSQL๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ด€๊ณ„ํ˜•DB์ธ PostgreSQL์—์„œ๋„ ์ง€์›ํ•˜๊ธฐ ์‹œ์ž‘. MySQL์—์„œ๋„ 5.7์—์„œ ๊ณต์‹ ์ง€์›ํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ™•์‚ฐ๋˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•ด๋„ ์–ด๋””๊นŒ์ง€๋‚˜ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฃผ๊ฐ€ ๋˜๋Š” ํ™˜๊ฒฝ, ํŠนํžˆ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” HTML ๊ณผ ์ด๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ€๊ณตํ•˜๋Š” JavaScript๊ฐ€ ์—ฐ๋™ํ•˜๋Š” ํ™˜๊ฒฝ ์œ„์ฃผ๋กœ ํผ์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ณณ์—์„œ๋Š” ์—ฌ์ „ํžˆ XML์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€์—†๋‹ค. XML ํŒŒ์„œ๋„ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์— ๊ตฌํ˜„๋ผ์žˆ๊ณ  XML์ด๋ž€ ๋†ˆ์ด ๋”ฑํžˆ ๋ฌด์Šจ ๊ฒฐํ•จ์ด ์žˆ๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ๋ฉฐ ๊ฒฐ์ •์ ์œผ๋กœ XML์—๋Š” ์Šคํ‚ค๋งˆ(Schema)๊ฐ€ ์žˆ์–ด์„œ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋‹ค. JSON์€ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์ฆํ•˜๋Š” ์—ญํ• ์„ ์ „์ ์œผ๋กœ ๊ทธ๊ฑธ ์‚ฌ์šฉํ•˜๋Š” ์ธก์— ๋– ๋งก๊ธด๋‹ค. ๋‹ค๋งŒ JSON์ด ์›น์„ ์‹œ์ž‘์œผ๋กœ ํŽธ์˜์„ฑ์ด ๋„๋ฆฌ ์•Œ๋ ค์ง€๋ฉด์„œ ์ตœ๊ทผ ๋“ค์–ด ๋‹ค์–‘ํ•œ๋ถ„์•ผ๋กœ ๋งŽ์ด ์“ฐ์ด๋Š”์ค‘์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  JSON๋„ ์ ์šฉ๋˜๋Š” ๊ณณ์ด ๋Š˜์–ด๋‚จ์— ๋”ฐ๋ผ XML๊ณผ ๊ฐ™์ด validํ•œ ๊ฒ€์ฆ์ด ํ•„์š”ํ•ด์กŒ์œผ๋ฉฐ, Namespace ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Š˜๊ณ  ์žˆ๋‹ค. ์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด JSON-Schema, JSON-LD(JSON Linking Data) ๊ฐ™์€ ๊ฒƒ์ด ๋“ฑ์žฅํ•˜๊ณ  ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋Œ€์‘์ฑ…์œผ๋กœ ์ œ์‹œ๋œ JSON ์Šคํ‚ค๋งˆ๋Š” ํ˜„์žฌ ๊ฑฐ์˜ ์“ฐ์ด์ง€ ์•Š๊ณ  ์žˆ๋‹ค. ์›น์ด๋ผ๋Š” ํ™˜๊ฒฝ ํŠน์„ฑ์ƒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ข€ ์ž˜๋ชป ๋“ค์–ด๊ฐ„๋‹ค๊ณ  ํ•ด์„œ ํŠน๋ณ„ํžˆ ํฐ์ผ์ด ๋‚˜๋Š” ๊ฒŒ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž˜๋ชป ๋“ค์–ด๊ฐ€๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ•์ œ ์ข…๋ฃŒํ•œ๋‹ค๊ฑฐ๋‚˜ ํ•˜๋Š” ํฌ๋ฆฌํ‹ฐ์ปฌํ•œ ์‘์šฉ์—์„œ๋Š” ๊ทธ๋ƒฅ XML์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. JSON์€ ์ฝค๋งˆ๊ฐ€ ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ ์ค‘๊ด„ํ˜ธ๊ฐ€ ์ž˜๋ชป ๋‹ซํžˆ๋Š” ๋“ฑ์˜ ์˜ค์—ผ์— ์•„์ฃผ ์ทจ์•ฝํ•˜๋‹ค. XML์€ SAXํŒŒ์„œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋Ÿฐ ๋ฐ์ดํ„ฐ ์˜ค๋ฅ˜๋ฅผ ๋ฐ”๋กœ์žก๊ณ  ์žฌ๋™๊ธฐํ™”๊ฐ€ ์‰ฝ๋‹ค.

Unity3D ์—”์ง„์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ์‹œ๋ฆฌ์–ผ๋ผ์ด์ €์™€ ๋””์‹œ๋ฆฌ์–ผ๋ผ์ด์ €๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ์—์„œ๋„ ๋Œ€๊ฑฐ ์‚ฌ์šฉ๋˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. CSV ๋“ฑ ๊ธฐ์กด ํฌ๋ฉง์— ๋น„ํ•ด ํƒœ๊ทธ์— ์˜ํ•œ ๋ฐ์ดํƒ€ ํ™•์žฅ๊ณผ ๋ณ€ํ˜•์ด ์šฉ์ดํ•˜๊ณ  ๊ณผ๊ฑฐ์— ๋น„ํ•ด ๋ฐ์ดํƒ€ ์‚ฌ์šฉ๋Ÿ‰์ด ์ž์œ ๋กญ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ํ˜„์ƒ์ด ๊ฐ€์†ํ™” ๋˜๊ณ  ์žˆ๋‹ค. (๋‹จ์ ์ธ ์˜ˆ๋กœ ๋งŽ์€ ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ๋“ค์ด ์ œ์ด์Šจ์œผ๋กœ ๋˜์–ด์žˆ๋‹ค.)

Sublime Text, Visual Studio Code์—์„œ๋Š” ํ™˜๊ฒฝ ์„ค์ • ํŒŒ์ผ์— JSON์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

ECMAScript๋Š” 5๋ถ€ํ„ฐ Trailing comma(ํ›„ํ–‰ ์‰ผํ‘œ)๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ JSON์€ ๊ทธ ์ด์ „์— ๊ทœ๊ฒฉ์ด ์ •ํ•ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— Trailing comma๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

http://www.json.org์—์„œ ํ‘œ๊ธฐ๋ฒ•๊ณผ ์–ธ์–ด๋ณ„ ์ง€์› ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ฐธ๊ณ 

4. ๋‹จ์ [ํŽธ์ง‘]

XML์ด๋‚˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ๊ธฐ์ˆ  ํ˜•์‹์— ๋น„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๋‹จ์ ์ด ์žˆ๋‹ค.
  • ๋ฌธ๋ฒ• ์˜ค๋ฅ˜์— ๋ฏผ๊ฐํ•˜๋‹ค. ์ฝค๋งˆ๊ฐ€ ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ ์ค‘๊ด„ํ˜ธ๊ฐ€ ์ž˜๋ชป ๋‹ซํžˆ๋Š” ๋“ฑ ๊ตฌ๋‘์ ์—์„œ ์˜คํƒ€๊ฐ€ ๋‚˜๋ฉด ์ „์ฒด JSONํŒŒ์ผ์ด ๋ง๊ฐ€์ง„๋‹ค. ์ฐพ๊ธฐ ๊ธฐ๋Šฅ์ด ์—†๋Š” ํŽธ์ง‘๊ธฐ์—์„œ ์ค„ ๊ธธ์ด๊ฐ€ ๊ธธ์–ด์ง€๋ฉด ์ฝค๋งˆ๊ฐ€ ๋ˆ„๋ฝ๋œ ๊ณณ์„ ์ฐพ๊ธฐ ํž˜๋“ค๋‹ค.
  • ์ฃผ์„์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜์„œ ์„ค์ • ํŒŒ์ผ์„ JSON์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค. [5]
  • ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ•์ œํ•  ์ˆ˜ ์—†๋‹ค. JSON ์Šคํ‚ค๋งˆ๋กœ ๋ณด์™„์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ ์Šค์Šค๋กœ ์ž์‹ ์˜ ํƒ€์ž…์„ ๊ธฐ์ˆ ํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค.

์œ„์™€ ๊ฐ™์€ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ณ ์ž YAML ๋“ฑ์˜ ๋Œ€์ฒด ํฌ๋งท์„ ์“ฐ๊ธฐ๋„ ํ•˜๋‚˜ ๊ธฐ๊ณ„๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก์— ์ฃผ๋กœ ์“ฐ์ด๋Š” JSON์˜ ํŠน์„ฑ์ƒ ์œ„์˜ ๋‹จ์ ์€ ํฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ์„œ JSON์€ 2017๋…„ 11์›” ํ˜„์žฌ๋„ XML๊ณผ ๋Œ€๋“ฑํ•˜๊ฒŒ ๋„๋ฆฌ ์“ฐ์ด๊ณ  ์žˆ๋‹ค.

5. JSONP[ํŽธ์ง‘]

OpenAPI ์„œ๋น„์Šค ์ค‘ CORS[6]๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์€ ๊ตฌํ˜• ์„œ๋น„์Šค์—์„œ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ๋ ค์ค„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ํ˜•์‹์ด๋‹ค. P๋Š” ํŒจ๋”ฉ(Padding)์˜ ์•ฝ์–ด๋กœ, HTML script ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•˜๋ฉด CORS๋ฅผ ์šฐํšŒํ•˜์—ฌ ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ด์šฉํ•ด JSON ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง€์ •ํ•œ callback ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์œ ํšจํ•œ JavaScript ์Šคํฌ๋ฆฝํŠธ ํ˜•์‹์œผ๋กœ ํŒจ๋”ฉํ•˜์—ฌ ๋Œ๋ ค์ค€๋‹ค. callback ํ•จ์ˆ˜์˜ ์ด๋ฆ„์€ ์š”์ฒญ์ž๊ฐ€ ์ •ํ•ด์„œ ์„œ๋ฒ„์— ๋„˜๊ฒจ์ค€๋‹ค. ์˜ˆ๋กœ jQuery์˜ jsonp๋Š” jQuery89034758903475๊ฐ™์€ ๋‚œ์ˆ˜ ์ด๋ฆ„์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด https://jsonplaceholder.typicode.com/posts/1?callback=__cb12345 ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์‘๋‹ต์ด ๋Œ์•„์˜จ๋‹ค.


/**/ typeof __cb12345 === 'function' && __cb12345({
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
});

๊ธฐ๋ณธ์ ์œผ๋กœ ์ด JSONP์˜ ๋ชฉ์ ์€ ์›น ๋ธŒ๋ผ์šฐ์ € ๋‚ด์—์„œ์˜ CORS๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์€ ํ˜ธ์ŠคํŠธ์™€์˜ ํ†ต์‹ ์„ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ, ์›น ๋ธŒ๋ผ์šฐ์ € ๋ฐ–์—์„œ๋Š” Same Origin ์ •์ฑ…์ด ์ ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— JSONP๋ฅผ ์ด์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋˜ํ•œ API๋ฅผ ์ง์ ‘ ๊ฑด๋“œ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋ฉด CORS ์ •์ฑ…์„ ์ง์ ‘ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

[1] ์ œ์ด์Šจ์ด๋ผ๊ณ  ์ฝ๋Š”๋‹ค.
[2] ๋‚ด๋ถ€์ ์œผ๋กœ 0,1,2,... ์™€ ๊ฐ™์€ ์ˆซ์ž๋กœ ๋œ ์ด๋ฆ„ํ‘œ(์ธ๋ฑ์Šค)๊ฐ€ ์ž๋™์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค. ์œ„ ์˜ˆ์ œ์— ์˜ํ•˜๋ฉด "0":"macOS", "1":"iOS".... ์˜ ์ˆœ์„œ๋กœ ์ด๋ฆ„ํ‘œ๊ฐ€ ๋งค๊ฒจ์ง„๋‹ค.
[3] JavaScript์—์„œ ์ •๋ง ์•„๋ฌด๊ฒƒ๋„ ์•„๋‹ˆ๋ผ๋Š” ์˜๋ฏธ๋Š” undefined๊ณ  null์€ null์ด๋ผ๋Š” ์ด๋ฆ„์˜ ๊ฐ์ฒด๋‹ค(...)
[4] MongoDB์—์„œ ์“ฐ์ธ๋‹ค.
[5] ๋‹จ, ๋น„๊ณต์‹ ๊ทœ๊ฒฉ์ธ jsonc๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ๋˜ํ•œ "_comment"๋ผ๋Š” ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.
[6] ๋„๋ฉ”์ธ์ด ์„œ๋กœ ๋‹ค๋ฅธ ๊ณณ๋ผ๋ฆฌ์˜ ํ†ต์‹ ์„ ์œ„ํ•œ ๊ทœ์•ฝ.