ปัญหา
ในงานที่ทำ มีกรณีของการทำงานร่วมกับข้อมูลในรูปแบบ JSON
ซึ่งในบาง field/property อาจจะมีข้อมูลมาบ้าง ไม่มีบ้าง
แถมเป็น null/nill ได้อีก
ทำให้การแปลงข้อมูล JSON มาเป็น Struct
ไม่ตรงตามที่ต้องการเท่าไร
จึงลองหาวิธีการแก้ไขนิดหน่อย
แนวทางการแก้ไข
เริ่มจาก code ปกติงานได้ปกติ
[gist id="56a87e374f87ebcf988f5ab06f89fa56" file="1.go"]แต่เมื่อถ้าบาง property ไม่ได้กำหนดค่า
จะมีค่าเป็น zero value
ยกตัวอย่างที่ property Amount
สิ่งที่ต้องการคือ ถ้าไม่ทำการกำหนดค่าของ property Amount
จะไม่แสดง property Amount มาด้วย
โดยเพิ่ม json literal ชื่อว่า omitempty
ก็ทำตามนี้
แต่ก็มีบางกรณี ที่มีกำหนดค่าเป็น nil มาด้วย มันจะซับซ้อนไปไหน ?
จัดการข้อมูลต้นทางดี ๆ ไม่ได้หรือไง ?
ตอบเลย ไม่ได้ เศร้า !!
ดังนั้นแก้ไขกันหน่อย
ด้วยการให้ property ที่มีชนิดเป็น int ให้สามารถรับค่า nil ได้
ด้วยการเปลี่ยนเป็น pointer ดังนี้
ก็พอแก้ไขให้ทำงานที่ต้องการได้บ้าง