refactor: rename examples/ directory to lib/ and update all path references
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
# lib/jsonexample 실습 설명서
|
||||
|
||||
본 디렉토리는 Go 언어 표준 라이브러리(`encoding/json`)를 활용한 JSON 데이터 직렬화 및 역직렬화 실습 예제를 포함하고 있습니다.
|
||||
|
||||
## 📖 실습 상세 분석 및 가이드 안내
|
||||
|
||||
이 실습에 대한 상세한 코드 해설과 구조체 태그 매핑 원리는 심화 학습 문서인 **[docs/JSON.md](../../docs/JSON.md)**에서 상세히 기술되어 있습니다.
|
||||
|
||||
[docs/JSON.md](../../docs/JSON.md) 문서에서 다음 내용을 공부할 수 있습니다:
|
||||
* **Go 구조체와 JSON 필드 매핑 및 필드 노출 대소문자 규칙**
|
||||
* **Go `Marshal` 및 `Unmarshal` 함수 동작 메커니즘**
|
||||
* **동적 맵 구조(`map[string]interface{}`)의 직렬화 실습 분석**
|
||||
|
||||
---
|
||||
|
||||
## 🚀 빠른 실행 방법
|
||||
|
||||
이 예제는 리포지토리 루트의 `lib/main.go`를 통해 실행됩니다.
|
||||
|
||||
1. 리포지토리 루트의 `lib/main.go`를 엽니다.
|
||||
2. `main()` 함수 내에서 `jsonexample.JsonParsingExample()`의 주석을 해제합니다.
|
||||
3. 리포지토리 루트에서 다음 명령어를 실행합니다:
|
||||
```bash
|
||||
go run ./lib
|
||||
```
|
||||
@@ -0,0 +1,62 @@
|
||||
package jsonexample
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type Person struct {
|
||||
Name string `json:"name"`
|
||||
Age int `json:"age"`
|
||||
History []string `json:"history"`
|
||||
}
|
||||
|
||||
func JsonParsingExample() {
|
||||
obj := map[string]interface{}{
|
||||
"name": "홍길동",
|
||||
"age": 623,
|
||||
"history": []string{
|
||||
"1900-양반집을 털었다",
|
||||
"1910-왕에게 잡혀감",
|
||||
},
|
||||
}
|
||||
|
||||
b, err := json.Marshal(obj)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fmt.Println(string(b))
|
||||
|
||||
obj2 := map[string]interface{}{}
|
||||
err = json.Unmarshal(b, &obj2)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fmt.Println(obj2["age"])
|
||||
|
||||
p := Person{
|
||||
Name: "Godopu2",
|
||||
Age: 70,
|
||||
History: []string{
|
||||
"1900-양반집을 털었다",
|
||||
"1910-왕에게 잡혀감",
|
||||
},
|
||||
}
|
||||
b, err = json.Marshal(&p)
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fmt.Println(string(b))
|
||||
|
||||
var p2 Person
|
||||
err = json.Unmarshal(b, &p2)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fmt.Println(p2.Age)
|
||||
}
|
||||
Reference in New Issue
Block a user