๋ธ๋ผ์ฐ์ ์์์ ๋์ํ๋ ์น์ฌ์ดํธ๋ ์น ์ดํ๋ฆฌ์ผ์ด์
๊ณผ ๊ฐ์ Client๋ค์ด ์ด๋ป๊ฒ Server์ ํต์ ํ ์ ์์๊น?
1. HTTP(Hypertext Transfer Protocal)
Client ์ Server ์ด ์ด๋ป๊ฒ Hypertext๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์ ์ง ๊ท์ฝํ ํ๋กํ ์ฝ
Client๊ฐ Server์๊ฒ ๋ฐ์ดํฐ๋ฅผ requestํ๋ฉด, Server๋ ๊ทธ์ ๋ง๋ response๋ฅผ Client๋ก ๋ณด๋
2. AJAX(Asynchronous JavaScript And XML)
์นํ์ด์ง์์ ๋์ ์ผ๋ก ์๋ฒ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ๊ธฐ์
๋ํ์ ์ธ ์๋ก๋ ๋ธ๋ผ์ฐ์ API์์ ์ ๊ณตํ๋ XMLHttpRequest(XHR) ์ค๋ธ์ ํธ๊ฐ ์๋ค.
ํน์ fecth() API๋ก ๊ฐํธํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
3. XML
html๊ฐ์ Markup Language (ํ๊ทธ๋ฅผ ์ด์ฉํจ)
๋ฐ์ดํฐ๋ฅผ ํํํ ์ ์๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ
์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ XML ๋ฟ๋ง ์๋๋ผ ๋ค์ํ ํ์ผ ํฌ๋งท์ ์ ๋ฌ๋ฐ์ ์ ์๋ค.
XML์ ์ฌ์ฉํ๋ฉด ๋ถํ์ํ ํ๊ทธ๊ฐ ๋๋ฌด ๋ง์ด ๋ค์ด๊ฐ ๊ฐ๋ ์ฑ๋ ๋จ์ด์ง๊ณ ํ์ผ ์ฌ์ด์ฆ๋ ์ปค์ง๊ธฐ ๋๋ฌธ์ XML ๋์ JSON์ ๋ง์ด ์ฌ์ฉํ๋ ์ถ์ธ์ด๋ค.
4. JSON
JavaScript Object Notation์ ์ฝ์
ECMAXcript 3rd 1999์ Object์์ ์๊ฐ์ ๋ฐ์์ ๋ง๋ค์ด์ง ๋ฐ์ดํฐ ํฌ๋งท
์๋ฐ์คํฌ๋ฆฝํธ์ Object๋ {key: value}
JSON๋ ๋ง์ฐฌ๊ฐ์ง๋ก key:value๋ก ์ด๋ฃจ์ด์ง
{
"name": "Cecilia",
"age": 25,
"hobbies": ["reading", "coding", "movies"],
"isStudent": true,
"address": {
"city": "Tokyo",
"country": "Japan"
}
}
JSON์ ๋ธ๋ผ์ฐ์ ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ฐ์ผ์์ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋, ์๋ฒ์ ํต์ ์ ํ์ง ์๊ณ ์ค๋ธ์ ํธ๋ฅผ ํ์ผ ์์คํ ์ ์ ์ฅํ ๋๋ JSON ํ์ผ ํ์์ ์ด์ฉํ๋ค.
JSON
- simplest data interchange format
- lightweight text-based structure
- easy to read
- key-value pairs
- used for serialization and transmission of data between the network the network connection
- independent programming language and platform
**serialization ์ง๋ ฌํ
** independent -> ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ๋ซํผ์ ์๊ด ์์ด ์ธ ์ ์๋ค. C, C#, Java, Python, PHP ๋ฑ๊ณผ ํ๋ซํผ์ ์๊ด ์์ด JSON <-> Object๊ฐ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅ.
์ฐ๋ฆฌ์ Web Application์ rabbit์ด๋ผ๋ object๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด์.
์ด ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ์ ์กํ ๋๋ rabbit ์ด๋ผ๋ ์ค๋ธ์ ํธ๋ฅผ {key:value} ํํ์ Stringํ์ ์ผ๋ก ๋ณํํด์ ์ ์กํด์ผ ํ๋ค. ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ๋ค์ ๋ฐ์์ฌ ๋๋ {key:value} ํํ๋ก ๋ฐ์์จ ํ ๋ค์ rabbit ์ด๋ผ๋ ์ค๋ธ์ ํธ๋ก ๋ณํํด์ ๋ธ๋ผ์ฐ์ ์ ํ๊ธฐํ๊ฒ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด JSON ์ ์ด๋ป๊ฒ ๊ณต๋ถํด์ผ ํ๋๊ฐ?
- object๋ฅผ string ์ผ๋ก serialize(์ง๋ ฌํ)ํ๋ ๋ฒ
- ์ง๋ ฌํ๋ JSON์ ๋ค์ deserialize(์ญ์ง๋ ฌํ) ํด์ object๋ก ๋ค์ ๋ณํํ๋ ๋ฒ
5. Object to JSON
JSON.stringify()
name, nationality, size: JSON์ ํฌํจ๋จ.
birthDate: Date ๊ฐ์ฒด๋ ๋ฌธ์์ด๋ก ๋ณํ๋จ(ISO ํฌ๋งท).
greet: ํจ์๋ object์ ์๋ data๊ฐ ์๋๋ฏ๋ก ์ ์ธ๋จ.
Symbol: symbol ๊ฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ์๋ง ์๋ ํน๋ณํ ๋ฐ์ดํฐ๋ JSON ์ ํฌํจ๋์ง ์์.
๋ฐฐ์ด์์ ์ํ๋ property๋ง JSON์ผ๋ก ๋ณํ
๋ฐฐ์ด์์ ์ํ๋ property๋ง JSON์ผ๋ก ๋ณํํ๊ณ ์ถ์ผ๋ฉด `JSON.stringfy()`์ ๋งค๊ฐ๋ณ์ 1๊ฐ ๋ ์ถ๊ฐํด์ ํธ์ถํ๋ค.
replacer์ key์ value๋ฅผ ์ ๋ฌ๋ฐ๋ ์ฝ๋ฐฑํจ์๋ฅผ ์ฌ์ฉํด๋ณด์.
์ถ๋ ฅํด๋ณด๋ฉด ๋ชจ๋ key์ value๋ค์ด ์ฝ๋ฐฑํจ์์ ์ ๋ฌ๋๋ค.
์ ์ผ ์ฒ์์ผ๋ก ์ ๋ฌ๋๋ ๊ฒ์ person์ object๋ฅผ ์ธ๊ณ ์๋ ์ ์ผ ์ต์์ ๊ฒ์ด ์ ๋ฌ๋จ.
์ฌ๊ธฐ์ ์ด๋ค ๊ฒ๋ ๊ฐ๋ฅํ๋๋ฉด
๋ง์ฝ key ๊ฐ 'name'์ด๋ผ๋ ๊ฒ์ด ๋ค์ด์ค๊ฒ ๋๋ฉด ๋ฌด์กฐ๊ฑด 'choi'๋ก ์ค์ ํ๊ณ
key ๊ฐ 'name'์ด ์๋ ๊ฒฝ์ฐ์๋ ์๋ original value ์ฐ๋๋ก ์ค์ ๊ฐ๋ฅ
1. replacer ํจ์๋ก ์ ํ์ ํฌํจ
JSON.stringify()์ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก replacer๋ฅผ ์ฌ์ฉํด ์ํ๋ ํ๋กํผํฐ๋ฅผ ํํฐ๋งํ๊ฑฐ๋ ๋ณํํ ์ ์๋ค.
const jsonString = JSON.stringify(person, (key, value) => {
if (key === "name" || key === "nationality") {
return value;
}
return undefined;
});
console.log(jsonString);
// ์ถ๋ ฅ: {"name":"dain","nationality":"South Korea"}
2. Symbol ํฌํจ & Date ํฌ๋งท ๋ณ๊ฒฝ
const jsonString = JSON.stringify(person, (key, value) => {
if (typeof value === "symbol") {
return value.toString(); // Symbol์ ๋ฌธ์์ด๋ก ๋ณํ
}
if (value instanceof Date) {
return value.toLocaleDateString(); // Date ํฌ๋งท ๋ณ๊ฒฝ
}
return value;
});
console.log(jsonString);
// ์ถ๋ ฅ: {"name":"dain","nationality":"South Korea","size":null,"birthDate":"12/21/2024"}
3. ํจ์๋ Symbol์ ํฌํจํ ๋ฌธ์์ด๋ก ์ปค์คํฐ๋ง์ด์ง
JSON์ ๊ธฐ๋ณธ์ ์ผ๋ก ํจ์์ Symbol์ ํฌํจํ์ง ์์ง๋ง, ๋ณํํ๊ธฐ ์ ์ ๊ฐ์ฒด๋ฅผ ์กฐ์ํ๊ฑฐ๋ ์ปค์คํฐ๋ง์ด์ง๋ ๋ฌธ์์ด๋ก ์ฒ๋ฆฌ๊ฐ๋ฅํ๋ค.
const enhancedPerson = {
...person,
Symbol: person.Symbol.toString(), // Symbol์ ๋ฌธ์์ด๋ก ๋ณํ
greet: person.greet.toString(), // ํจ์ ๋ด์ฉ์ ๋ฌธ์์ด๋ก ๋ณํ
};
const jsonString = JSON.stringify(enhancedPerson);
console.log(jsonString);
// ์ถ๋ ฅ: {"name":"dain","nationality":"South Korea","size":null,"birthDate":"2024-12-21T00:00:00.000Z","Symbol":"Symbol(id)","greet":"() => {\n console.log(`${name} says hi!`); \n }"}
4. ์ ์ฒด JSON ๊ตฌ์กฐ๋ฅผ ๋ณด๊ธฐ ์ข๊ฒ ์ถ๋ ฅ (pretty print) ํ๊ธฐ
JSON.stringify()์ ์ธ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก ๋ค์ฌ์ฐ๊ธฐ ์ค์ ์ ์ถ๊ฐํ๋ฉด ์ฌ๋์ด ์ฝ๊ธฐ ์ฌ์ด ํํ๋ก ๋ณํ๋๋ค.
const jsonString = JSON.stringify(person, null, 2);
console.log(jsonString);
// ์ถ๋ ฅ:
// {
// "name": "dain",
// "nationality": "South Korea",
// "size": null,
// "birthDate": "2024-12-21T00:00:00.000Z"
// }
5. filtered ๋ณ์ ์ฌ์ฉ
let users = [
{ id: 1, name: "Alice", age: 25 },
{ id: 2, name: "Bob", age: 30 },
{ id: 3, name: "Charlie", age: 35 }
];
// ํน์ ํ๋กํผํฐ(name๋ง) ์ถ์ถ
let filtered = users.map(user => ({ name: user.name }));
// JSON ๋ฌธ์์ด๋ก ๋ณํ
let jsonString = JSON.stringify(filtered);
console.log(jsonString);
// ์ถ๋ ฅ: [{"name":"Alice"},{"name":"Bob"},{"name":"Charlie"}]
6. JSON to Obejct
JSON.parse()
person ์ด๋ผ๋ object๋ฅผ JSON์ผ๋ก ๋ณํํ ๋๋ ๋ฐ์ดํฐ๋ค๋ง ๋ณํ์ด ๋๊ณ ํจ์๋ ํฌํจ์ด ์ ๋จ.
๋ฐ๋ผ์ JSON์ ๋ค์ obj๋ก ๋ณํํด๋ ์ฒ์๋ถํฐ greet๋ผ๋ ํจ์๊ฐ ์ ๋ค์ด์์๊ธฐ ๋๋ฌธ์
greet ๊ธฐ๋ฅ์ ์๋ค. ๋ฐ๋ผ์ ์ฝ์์ ๋ก๊ทธ๋ฅผ ์ฐ์ด ๋ณด๋ฉด ์๋์ฒ๋ผ ์ค๋ฅ๊ฐ ๋๋ค.
JSON์ผ๋ก๋ถํฐ ๋ง๋ obj์ birthDate๋ฅผ ์ถ๋ ฅํ๊ฒ ๋๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
์๋ํ๋ฉด birthDate๋ String์ด๊ธฐ ๋๋ฌธ์ด๋ค. JSON ์์ฒด์ String์ด obj๋ก ํ ๋น๋๊ฒ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ด์ reviver์ key, value๋ผ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์์ ๋ญ๊ฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฝ๋ฐฑํจ์๋ฅผ ์ ๋ฌํด๋ณด์
์ด๊ฑธ ์์ฉํ๋ฉด ์์์ ์๋ฌ๊ฐ ๋ฌ๋ obj์์ date ๊ฐ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ํ ํ ์ ์๋ค.
key๊ฐ ๋ง์ฝ birthDate๋ฉด ์๋ก์ด Date ์ค๋ธ์ ํธ๋ฅผ ๋ง๋ค๊ณ ,
key๊ฐ birthDate๊ฐ ์๋๋ฉด ์๋ ์๋ Date๋ฅผ ๊ทธ๋๋ก ์ฐ์.
์ด๋ ๊ฒ ์ ๋ ฅํด์ฃผ๊ธฐ
7. JSON ๊ด๋ จ ์ถ์ฒ ์น์ฌ์ดํธ
7-1. JSON Diff ๋ท์ปด
์๋ฒ์๊ฒ ์์ฒญํ์ ๋ ์ฒซ๋ฒ์งธ๋ก ๋ฐ์์จ ๋ฐ์ดํฐ์ ๋ ๋ฒ์งธ๋ก ๋ฐ์์จ ๋ฐ์ดํฐ๊ฐ ์ด๋ค ์ ์ด ๋ค๋ฅธ ์ง ์๊ณ ์ถ์ ๋ ์ฌ์ฉ ๊ฐ๋ฅ
๋๋ฒ๊น ํ ๋ ์ ์ฉํ๊ฒ ์ธ ์ ์๋ค. ๋ ๊ฐ ์์ค ๋ถ์ฌ ๋ฃ๊ณ compare ๋ฒํผ ํด๋ฆญ
JSON Diff - Compare and Find Differences in JSON Files Online
Launchgrid Explore the latest product launches in AI, apps and more!
json-diff.com
7-2. JSON Beautifier
๊ฐ๋ ์๋ฒ์์ ๊ฐ์ ธ์จ JSON์ ๋ถ์ฌ๋ฃ๊ธฐ ํ๋ฉด ํฌ๋งท์ด ๋ง๊ฐ์ง๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ฝ๋ ๊ฐ์ ธ์์ ์ด ์น์ฌ์ดํธ์ ๋ถ์ฌ ๋ฃ๊ณ Beautify ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํฌ๋งท์ด ์์๊ฒ ๋ง๋ค์ด์ง๋ค.
๋ ์ข์ ์ ์ Minify๋ฅผ ํด๋ฆญํ๋ฉด JSON ํฌ๋งท์ ์ค์ผ์๋ ์๋ค.
Json Beautifier - Json Formatter | Json Viewer | Json Editor
Online best free JSON Beautifier tool used as JSON editor, Json viewer, Json Validator and Json formatter to display data in a tree view and plain text.
jsonbeautifier.org
7-3. JSON Parser
JSON ํ์ ์ object ํํ๋ก ํ์ธํด ๋ณด๊ณ ์ถ๋ค๋ฉด ์ผ์ชฝ์ JSON์ ๋ถ์ฌ ๋ฃ๊ณ JSON Parser ๋ฒํผ ํด๋ฆญ
Json Parser Online
json.parser.online.fr
JSON Fomatter and Validator
JSON์ ๋ถ์ฌ ๋ฃ๊ณ Validate ๋ฅผ ํด๋ฆญํ๋ฉด ์ ํจํ ํ์์ธ์ง ์๋์ง ํ์ธํด ์ค
ํนํ ์ปด๋ง ๊ฐ์ ๊ฑฐ ๋นผ๋จน์ผ๋ฉด ํ๋ฆฐ ๋ถ๋ถ ์ฐพ์ ์ค.
Best JSON Formatter and JSON Validator: Online JSON Formatter
Online JSON Formatter / Beautifier and JSON Validator will format JSON data, and helps to validate, convert JSON to XML, JSON to CSV. Save and Share JSON
jsonformatter.org