Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

[Go] บันทึกแก้ไขปัญหาในการจัดการ JSON นิดหน่อย (JSON Serialization)

$
0
0

ปัญหา
ในงานที่ทำ มีกรณีของการทำงานร่วมกับข้อมูลในรูปแบบ JSON
ซึ่งในบาง field/property อาจจะมีข้อมูลมาบ้าง ไม่มีบ้าง
แถมเป็น null/nill ได้อีก
ทำให้การแปลงข้อมูล JSON มาเป็น Struct
ไม่ตรงตามที่ต้องการเท่าไร
จึงลองหาวิธีการแก้ไขนิดหน่อย

แนวทางการแก้ไข

เริ่มจาก code ปกติงานได้ปกติ

[gist id="56a87e374f87ebcf988f5ab06f89fa56" file="1.go"]

แต่เมื่อถ้าบาง property ไม่ได้กำหนดค่า

จะมีค่าเป็น zero value
ยกตัวอย่างที่ property Amount

[gist id="56a87e374f87ebcf988f5ab06f89fa56" file="2.go"]

สิ่งที่ต้องการคือ ถ้าไม่ทำการกำหนดค่าของ property Amount

จะไม่แสดง property Amount มาด้วย
โดยเพิ่ม json literal ชื่อว่า omitempty
ก็ทำตามนี้

[gist id="56a87e374f87ebcf988f5ab06f89fa56" file="3.go"]

แต่ก็มีบางกรณี ที่มีกำหนดค่าเป็น nil มาด้วย มันจะซับซ้อนไปไหน ?

จัดการข้อมูลต้นทางดี ๆ ไม่ได้หรือไง ?
ตอบเลย ไม่ได้ เศร้า !!
ดังนั้นแก้ไขกันหน่อย
ด้วยการให้ property ที่มีชนิดเป็น int ให้สามารถรับค่า nil ได้
ด้วยการเปลี่ยนเป็น pointer ดังนี้

[gist id="56a87e374f87ebcf988f5ab06f89fa56" file="4.go"]

ก็พอแก้ไขให้ทำงานที่ต้องการได้บ้าง


Viewing all articles
Browse latest Browse all 1997

Trending Articles