แท็ก JSON
ควบคุมการแปลงเป็นข้อมูล
แท็ก JSON เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
แท็ก JSON ควบคุมการแปลงข้อมูล
แพ็กเกจ encoding/json ใช้ แท็ก json เพื่อกำหนดชื่อคีย์และกฎต่าง ๆ เมื่อแปลงโครงสร้างเป็น JSON หรือแปลง JSON กลับเป็นโครงสร้าง
ชื่อฟิลด์เริ่มต้น
หากไม่มีแท็ก คีย์ JSON จะตรงกับชื่อฟิลด์ที่ส่งออกทุกประการ รวมถึงตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string
Age int
}
func main() {
b, _ := json.Marshal(User{"Ann", 30})
fmt.Println(string(b))
}การเปลี่ยนชื่อคีย์
แท็ก json จะเปลี่ยนชื่อคีย์ในผลลัพธ์ ในที่นี้ Name จะกลายเป็น name ที่ใช้ตัวพิมพ์เล็ก
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
Age int "json:\"age\""
}
func main() {
b, _ := json.Marshal(User{"Ann", 30})
fmt.Println(string(b))
}ตัวเลือก omitempty
เพิ่ม ,omitempty เพื่อข้ามฟิลด์ในผลลัพธ์เมื่อฟิลด์นั้นมีค่าศูนย์ เช่น สตริงว่าง 0 หรือ nil
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
Email string "json:\"email,omitempty\""
}
func main() {
b, _ := json.Marshal(User{Name: "Ann"})
fmt.Println(string(b))
}การละเว้นฟิลด์
แท็ก - บอกตัวเข้ารหัสให้ข้ามฟิลด์นั้นทั้งหมด เหมาะสำหรับข้อมูลลับ เช่น รหัสผ่าน
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
Password string "json:\"-\""
}
func main() {
b, _ := json.Marshal(User{"Ann", "secret"})
fmt.Println(string(b))
}การแปลงกลับด้วยแท็ก
แท็กทำงานได้ทั้งสองทิศทาง เมื่อถอดรหัส JSON แท็กจะบอกตัวถอดรหัสว่าคีย์ JSON ใดจะเติมลงในฟิลด์ใด
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
}
func main() {
var u User
json.Unmarshal([]byte("{\"name\":\"Bob\"}"), &u)
fmt.Println(u.Name)
}การจับคู่โดยไม่คำนึงถึงตัวพิมพ์เล็กใหญ่
ขณะแปลงกลับ Go จะจับคู่คีย์ JSON กับแท็กโดยไม่คำนึงถึงตัวพิมพ์เล็กใหญ่เป็นทางเลือกสำรอง ถึงอย่างนั้น การกำหนดแท็กอย่างชัดเจนก็ยังเป็นตัวเลือกที่ปลอดภัยและชัดเจนกว่า
ตัวเลือก String
ตัวเลือก ,string จะแปลงฟิลด์ตัวเลขหรือค่าบูลีนเป็นสตริง JSON มีประโยชน์สำหรับระบบที่คาดหวังให้ตัวเลขอยู่ในเครื่องหมายคำพูด
package main
import (
"encoding/json"
"fmt"
)
type Item struct {
ID int "json:\"id,string\""
}
func main() {
b, _ := json.Marshal(Item{ID: 42})
fmt.Println(string(b))
}การรวมตัวเลือก
คุณสามารถรวมชื่อเข้ากับตัวเลือกได้ เช่น json:"email,omitempty" โดยให้ชื่ออยู่ก่อน แล้วตามด้วยตัวเลือกที่คั่นด้วยจุลภาค
ข้ามฟิลด์ที่ไม่ได้ส่งออก
เฉพาะฟิลด์ที่ส่งออก (ขึ้นต้นด้วยตัวพิมพ์ใหญ่) เท่านั้นที่จะถูกแปลงข้อมูล ฟิลด์ที่ขึ้นต้นด้วยตัวพิมพ์เล็กจะมองไม่เห็นสำหรับ encoding/json ไม่ว่าจะมีแท็กใดก็ตาม
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
age int
}
func main() {
b, _ := json.Marshal(User{Name: "Ann", age: 30})
fmt.Println(string(b))
}ผลลัพธ์ที่อ่านง่าย
json.MarshalIndent จัดรูปแบบ JSON ด้วยการเยื้องบรรทัด เหมาะสำหรับบันทึกที่อ่านง่าย และยังคงปฏิบัติตามแท็ก
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
}
func main() {
b, _ := json.MarshalIndent(User{"Ann"}, "", " ")
fmt.Println(string(b))
}ตรวจสอบอย่างรวดเร็ว
ตัวเลือก ,omitempty ในแท็ก json ทำหน้าที่อะไร
สรุปทบทวน
แท็ก JSON ใช้ควบคุมการแปลงข้อมูล:
- เปลี่ยนชื่อคีย์ด้วย
json:"name" ,omitemptyจะข้ามค่าศูนย์-จะไม่สนใจฟิลด์นั้น ส่วน,stringจะใส่เครื่องหมายคำพูดให้ตัวเลข- ระบบจะแปลงเฉพาะฟิลด์ที่ส่งออกเท่านั้น
คำถามที่พบบ่อย
บทเรียน “แท็ก JSON” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “แท็ก JSON” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “แท็ก JSON”
ควบคุมการแปลงเป็นข้อมูล คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “แท็ก JSON” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ