Skip to content

Commit de67039

Browse files
committed
docs: Json in JavaScript
1 parent a4d5dff commit de67039

File tree

2 files changed

+94
-1
lines changed

2 files changed

+94
-1
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# JSON in JavaScript
2+
3+
## Summary
4+
JavaScript Object Notation(JSON)은 데이터를 저장하거나 전송할 때 사용하는 텍스트 기반 포맷이다. JavaScript의 객체 문법과 유사하지만, 언어에 독립적인 형식으로 다양한 환경에서 널리 사용된다.
5+
6+
## Details
7+
8+
### JSON의 정의와 특징
9+
JSON은 JavaScript 객체에서 유래한 데이터 형식으로, 사람이 읽고 쓰기 쉽고 기계가 분석하고 생성하기 쉬운 포맷이다. 다음과 같은 특징을 가진다:
10+
11+
- **텍스트 기반 포맷**으로, 네트워크를 통해 데이터를 전송할 때 적합하다.
12+
- **키-값 쌍**으로 구성된 데이터 구조를 가진다.
13+
- JavaScript 문법과 유사하지만, JSON은 엄격한 규칙을 따른다.
14+
15+
> [!IMPORTANT]
16+
> JSON의 key는 반드시 **큰따옴표("")로 감싸야 하며**, value로는 문자열, 숫자, 배열, 객체, boolean, null만 사용할 수 있다.
17+
18+
### JSON과 JavaScript 객체의 차이점
19+
20+
| 항목 | JavaScript Object | JSON |
21+
|------|-------------------|------|
22+
| Key | 따옴표 없이 사용 가능 | 반드시 큰따옴표("") 사용 |
23+
| Function 포함 여부 | 함수 포함 가능 | 함수 포함 불가 |
24+
| Date 표현 | Date 객체로 표현 가능 | 문자열로 표현 필요 |
25+
26+
### JSON 파일의 예시
27+
실제 `.json` 파일은 다음과 같은 형태로 구성된다:
28+
29+
```json
30+
{
31+
"users": [
32+
{
33+
"id": 1,
34+
"name": "Alice",
35+
"email": "[email protected]",
36+
"isActive": true
37+
},
38+
{
39+
"id": 2,
40+
"name": "Bob",
41+
"email": "[email protected]",
42+
"isActive": false
43+
}
44+
]
45+
}
46+
```
47+
48+
> [!TIP]
49+
> .json 파일은 일반 텍스트 형식이며, data.json 같은 파일명으로 저장하여 사용할 수 있다. 많은 API에서 .json 포맷을 응답으로 사용한다.
50+
51+
### JSON.stringify()
52+
JavaScript 객체를 JSON 문자열로 변환할 때 사용한다.
53+
54+
```js
55+
const user = {
56+
name: "Alice",
57+
age: 30,
58+
isMember: true
59+
};
60+
61+
const jsonString = JSON.stringify(user);
62+
console.log(jsonString);
63+
// 출력: {"name":"Alice","age":30,"isMember":true}
64+
```
65+
66+
> [!NOTE]
67+
> `undefined`, 함수, 심볼 등은 JSON.stringify로 변환할 수 없으며, 해당 속성은 누락된다.
68+
69+
### JSON.parse()
70+
JSON 문자열을 JavaScript 객체로 변환할 때 사용한다.
71+
72+
```js
73+
const jsonStr = '{"name":"Alice","age":30,"isMember":true}';
74+
75+
const userObj = JSON.parse(jsonStr);
76+
console.log(userObj.name);
77+
// 출력: Alice
78+
```
79+
80+
> [!CAUTION]
81+
> 잘못된 JSON 형식을 파싱하려고 하면 `SyntaxError`가 발생하므로, 외부 입력을 파싱할 때는 `try...catch` 문을 사용하는 것이 좋다.
82+
83+
### JSON의 실전 활용
84+
- 서버에서 받아온 데이터를 처리할 때 API 응답(JSON 형식)을 파싱하여 사용한다.
85+
- 로컬스토리지에 데이터를 저장할 때 객체를 JSON 문자열로 변환하여 저장한다.
86+
- 다양한 프로그래밍 언어 간 데이터를 주고받을 때 공통 포맷으로 사용된다.
87+
88+
## Reference
89+
90+
**link:** External reference
91+
- [MDN - JSON](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON)

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
| DevOps | DevOps와 관련된 내용 | 3 |
1212
| Databases | 데이터베이스와 관련된 내용 | 0|
1313
| Frontend | 프론트 프레임워크와 관련된 내용 | 0 |
14-
| Languages | 다양한 프로그래밍 언어와 관련된 내용 | 29|
14+
| Languages | 다양한 프로그래밍 언어와 관련된 내용 | 30|
1515
| Networking | 네트워킹과 관련된 내용 | 0|
1616
| OperatingSystems | 운영 체제와 관련된 내용 | 1|
1717
| Security | 보안과 관련된 내용 | 0|
@@ -75,6 +75,8 @@
7575
┃  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┗━&nbsp;📄[**Stack**](./DevOps/Pulumi/Stack.md)</br>
7676
┣━&nbsp;📂[**Languages**](./Languages)</br>
7777
┃  &nbsp;&nbsp;┗━&nbsp;📂[**JavaScript**](./Languages/JavaScript)</br>
78+
┃  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┣━&nbsp;📂[**DataStructures**](./Languages/JavaScript/DataStructures)</br>
79+
┃  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┃  &nbsp;&nbsp;┗━&nbsp;📄[**Json**](./Languages/JavaScript/DataStructures/Json.md)</br>
7880
┃  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┣━&nbsp;📂[**DataTypes**](./Languages/JavaScript/DataTypes)</br>
7981
┃  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┃  &nbsp;&nbsp;┣━&nbsp;📄[**BigInt**](./Languages/JavaScript/DataTypes/BigInt.md)</br>
8082
┃  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┃  &nbsp;&nbsp;┣━&nbsp;📄[**Boolean**](./Languages/JavaScript/DataTypes/Boolean.md)</br>

0 commit comments

Comments
 (0)