วิธี convert json to object ในภาษาอื่นเช่น C#,C++,Java,JavaScript,Python,Swift,Objective-C

ง่ายและเร็ว
Generate Swift, C#, TypeScript and more from JSON.

วันนี้ผมจะขอนำเสนอ เครื่องทุ่นแรงให้เพื่อนๆ ชาว lazy developer กันนะคับ (ยิ่งมีเยอะเรายิ่งสบาย) เอามาเริ่มกันเลยดีกว่าครับ เราเกิดอยู่ในยุดที่ใครก็ใช้ API (Application Programming Interface ) ซึ่งมีทั้งส่วนที่เราเรียกเขาและเขาก็เรียกเราสลับกันไป สลับกันมา แต่วันนี้ผมจะพูดถึงขาที่เราเรียกเขานะครับ ตัวอย่างเช่นมี API ที่ Provide ข้อมูลให้เราใช้งานโดยมีตัวอย่างตามลิงค์ด้านล่างนี้

http://www.javascriptthai.com/AppDesign/TemplateEngine/ApiService/DataApiSample.php

ซึ่งตัวข้อมูลจะประกอบไปด้วยชื่อ เพศและอายุตามภาพ

แสดงตัวอย่างข้อมูล json

สมมุติว่าโปรแกรมที่เรากำลังพัฒนาอยู่เป็นภาษา C# แล้วเราต้องการเรียกใช้ข้อมูล API ตัวนี้ เราก็จะทำการเขียน Code เพื่อเรียกข้อมูลตามตัวอย่างด้านล่างครับ

 private static void Main(string[] args)
        {
            using (var client = new WebClient())
            {
                var json = client.DownloadString("http://www.javascriptthai.com/AppDesign/TemplateEngine/ApiService/DataApiSample.php");
                
            }
        }

จาก Code ข้างต้นเราก็จะสามารถเรียกข้อมูลมาใช้งานได้แล้ว แต่ปัญหาคือข้อมูลมันมาเป็น Text ยากต่อการใช้งาน ดังรูปด้านล่าง

"[{\"name\":\"Jonathan Suh\",\"gender\":\"male\",\"Age\":30},{\"name\":\"William Philbin\",\"gender\":\"male\",\"Age\":30},{\"name\":\"Allison McKinnery\",\"gender\":\"female\",\"Age\":30}]"

เราต้องทำการ Convert ก่อนเพื่อให้สะดวกต่อการใช้งานเราจึงได้เพิ่ม Code การ Convert ตามรูปด้านล่าง

ซึ่ง Code การ Convert มันก็จะแตกต่างกันเล็กน้อยในแต่ละภาษาแต่ highlight มันอยู่ที่ การสร้าง Model เพื่อใช้ในการ Convert (ลูกศรที่ชี้คำว่า FaceModel) ซึ่งโดยปกติเราต้องมานั่งเขียน Strong Type หรือ Class ให้มีจำนวน ฟิวด์ทำกับ
JSON (JavaScript Object Notation) ที่เราจะนำมาใช้ซึ่งถ้าน้อยก็ไม่ใช่ปัญหา แต่ถ้ามีสัก 20 30 ฟิวด์มืองิกกันพอดี ซึ่งเรามีเครื่องทุ่นแรงครับคือ link

https://app.quicktype.io/

ให้เราเอา JSON Data ที่เป็น Text Copy pate ไปที่ Site ระบบจะ Gen Class และ field พร้อมวิเคราะห์ให้ว่า เป็น Type String int หรือแม่กะทั่ง Type ที่สับซ้อนกันแบบ Array ก็ได้ด้วย โดยมันจะสับซ้อนได้ประมาณนึงครับ

ตัวอย่างการ Gen online

ตัวอย่าง Code ในภาษา C# ใช้โดยการแก้ Link ให้ชี้ไป API ที่เราต้องการ และก็ Gen Model ใหม่ผ่านเว็บที่ให้ด้านบนครับ ขอให้สนุกกับ Code นะครับ