การดู : 0

17/03/2026 14:57น.

EP.13 Go กับ JSON - แปลงข้อมูลให้เข้าใจง่าย!

EP.13 Go กับ JSON - แปลงข้อมูลให้เข้าใจง่าย!

#โปรแกรมเมอร์

#การจัดการข้อมูล

#Unmarshal

#Marshal

#JSON

#Go

Go กับ JSON - แปลงข้อมูลให้เข้าใจง่าย!

อยากให้ข้อมูลในโปรแกรมดูง่ายและใช้งานร่วมกับแอปอื่นได้ไหม? JSON คือคำตอบ! วันนี้เราจะมาสอนการแปลงข้อมูลเป็น JSON และแปลง JSON กลับมาใช้ใน Go ได้ง่ายๆ

 

JSON คืออะไร?
JSON (JavaScript Object Notation) เป็นรูปแบบข้อมูลที่มีโครงสร้างอ่านง่าย ใช้สื่อสารและแลกเปลี่ยนข้อมูลระหว่างโปรแกรมต่างๆ ได้เป็นอย่างดี ซึ่งนิยมใช้ในแอปพลิเคชันที่ต้องเชื่อมต่อกับ API หรือเซิร์ฟเวอร์

โครงสร้างของ JSON
JSON เก็บข้อมูลในรูปแบบ คู่ของ "ชื่อ": ค่า เช่น:

ในตัวอย่างนี้:
"name": "Alice" เป็นข้อความ (string)
"age": 25 เป็นตัวเลข (number)
"isStudent": true เป็นค่าจริง/เท็จ (boolean)

{
  "name": "Alice",
  "age": 25,
  "isStudent": true
}

 

การแปลงข้อมูลเป็น JSON ใน Go (Encoding)
การแปลงข้อมูลใน Go เป็น JSON ทำได้ง่ายๆ ด้วยคำสั่ง json.Marshal โดยใช้ struct เพื่อเก็บข้อมูลที่เราต้องการแปลง
ตัวอย่าง:

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    p := Person{Name: "Alice", Age: 25}
    jsonData, err := json.Marshal(p)
    if err != nil {
        fmt.Println("Error encoding JSON:", err)
        return
    }
    fmt.Println(string(jsonData)) // แสดงผล JSON เป็น string
}

 

ในตัวอย่าง 2/6:
เราสร้าง struct ชื่อ Person ที่มีฟิลด์ Name และ Age
ใช้ json.Marshal(p) เพื่อแปลง Person เป็น JSON
ผลลัพธ์จะได้:

{"name":"Alice","age":25}

 

การแปลง JSON กลับเป็นข้อมูลใน Go (Decoding)
เมื่อเราได้ JSON มาและต้องการแปลงกลับเป็นข้อมูลแบบ struct เราใช้ json.Unmarshal

ในตัวอย่างนี้: เราแปลง JSON (jsonData) กลับเป็น struct ชื่อ Person ด้วย json.Unmarshal
ผลลัพธ์จะแสดงชื่อและอายุของ Person

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    jsonData := []byte(`{"name":"Alice","age":25}`)
    var p Person
    err := json.Unmarshal(jsonData, &p)
    if err != nil {
        fmt.Println("Error decoding JSON:", err)
        return
    }
    fmt.Println(p.Name, "is", p.Age, "years old.")
}

 

สรุป
ใช้ json.Marshal เพื่อแปลงข้อมูลเป็น JSON (Encoding)
ใช้ json.Unmarshal เพื่อแปลง JSON กลับเป็นข้อมูล (Decoding)
JSON ช่วยให้ข้อมูลดูง่ายและสามารถใช้งานกับแอปพลิเคชันอื่นได้สะดวก

 

สามารถลองสร้าง struct ที่มีฟิลด์หลายแบบ เช่น ชื่อ อายุ และสถานะการเป็นนักเรียน แล้วแปลงเป็น JSON และแปลงกลับเป็น struct เพื่อดูว่าได้ข้อมูลเหมือนเดิมหรือไม่