วิธีเปลี่ยน xml เป็น json

หนึ่งในงานแรกๆของผมกับภาษาโกนั้น เกี่ยวข้องกับ xml และ json มาก วันนี้เลยอยากมาแบ่งปันสักหนึ่งเรื่อง ขอเป็นการเแปลง xml ไปเป็น json อย่างง่ายๆก็แล้วกันนะครับ เรามาดู code กันเลยดีกว่า


เมื่อลองรันดูจะได้ผลลัพธ์ตามนี้

ตามตัวอย่างนี้ มีข้อควรระวังอยู่เรื่องหนึ่งคือการประกาศตัวแปรภายใน struct ที่ชื่อ info จะต้องขึ้นต้นด้วยอักษรตัวใหญ่เท่านั้น มิเช่นนั้นแล้วจะไม่สามารถ unmarshal ได้เนื่องจาก encoding/xml เป็น แพคเก็จ ที่เราไปเรียกใช้ Unmarshal ไม่ได้อยู่ แพคเก็จเดียวกันกับเรา จึงต้องประกาศตัวแปรเป็นตัวใหญ่ เพื่อให้เป็น public และมองเห็นข้ามแพคเก็จได้ อีกส่วนหนึ่งคือแท็ก(tag) ที่อยู่หลังการประกาศตัวแปร
`xml:”name” json:”name”`
คือการบอกชื่อและพาร์ทของ xml ให้ unmarshal รู้ว่าควรจะไปหยิบค่าจากไหน และในกรณีนี้ผมติดแท็กให้ json ด้วย เพื่อบอกให้ตัว marshal ของ json รู้ว่าจะต้องแปลงเป็น json ชื่ออะไรนอกเหนือจากนี้เรายังสามารถเปลี่ยนรูปแบบของ struct เป็นอีกแบบหนึ่งเช่น

แบบนี้ก็ได้เหมือนกันนะครับ ซึ่งจะทำให้ json ที่ได้เปลี่ยนหน้าตาไปด้วยแล้วแต่จะนำไปใช้แบบไหน ซึ่งการติดแท็ก ยังมีลูกเล่นอีกมากให้ใช้ หวังว่าจะสนุกกับการเขียนโก นะครับ

Posted in 101