0Pricing
Go Academy · บทเรียน

แท็ก 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. แท็กสตรักต์คืออะไร
  2. แท็ก JSON
  3. ไลบรารีตรวจสอบความถูกต้อง
  4. การแยกวิเคราะห์แท็กแบบกำหนดเอง
← กลับไปที่ Go Academy