Delphi เทคนิค ดึงค่า ที่รับ JSON จาก API ลง Class
เราสามารถ Download File .Pas ที่ใช้ในเป็น Function ในการรับค่าจาก JSON มาเป็น Class โดยใช้เว็บ jsontodelphi.com

JSON นั้นมีชื่อเต็มๆว่า JavaScript Object Notation โดยจะได้มาจากการเรียก API แล้ว ได้รับการตอบกลับผลลัพธ์มาเป็น JSON
โดยในตัวอย่างนี้จะเป็นการเรียกใช้ API จาก สำนักงานพัฒนารัฐบาลดิจิทัล (องค์การมหาชน) หรือ สพร. ซึ่งเป็น API ที่เปิดให้ใช้งานฟรีเพื่อเรียกดูข้อมูล Covid -19

แต่การจะนำมาใช้ต้องสมัครสมาชิกก่อนนะครับ เพื่อเอา API Key มาใช้งาน

จากนั้นกดปุ่ม Data API

จะมี Popup ขึ้นมาให้เราเลือก URL ที่จะนำมาทดสอบ

เปิด Postman ขึ้นมาเพื่อ เรียกข้อมูลทดสอบ แล้วกรอก URL ที่ต้องการลงไป เช่น

ตรง Headers ใส่ KEY ของ Open-api ที่ได้ในตอนแรกลงไป แล้วกดปุ่ม Send
แล้วจะได้ผลลัพธ์กลับมาในรูปแบบ JSON

โดยการนำ Result ที่อยู่ในรูปแบบ JSON มาวางในช่องสี่เหลื่ยมที่เขียนว่า
Enter JSON
แล้วกด Generate

web จะแสดงหน้า preview ขึ้นมาให้

ให้ติ๊กเลือก Pkg.Json.DTD.pas กด Download จะได้ไฟล์มาสองไฟล์

ดูตัวอย่างการใช้ได้จาก

เปิด Delphi แล้ว Copy File ทั้งสองไปวางใน Path เดียวกับ Source code แล้ว Add เข้ามาใน Project

ทำการ Use .Pas เข้ามาใน Form


เราจะทำการดึงข้อมูลจาก JSON โดยกำหนดว่าจะดึง Resource ID มาแสดง

โดยเราจะทำหน้า UI มารับดังนี้

เราก็จะเขียนโปรแกรมดังนี้

procedure TMainForm.BtnCallAPIClick(Sender: TObject);
var
Covid: TRoot;
Res : IHTTPResponse;
begin
Covid := TRoot.Create();
try
NetHTTPRequest1.CustomHeaders[‘api-key’] := ‘เอา api key มาใส่’;
Res:= NetHTTPRequest1.get(‘https://opend.data.go.th/get-ckan/datastore_search?resource_id=4688036a-cd89-45f7-a0c3-a34dbe35a50c&limit=5');
Covid.AsJson := Res.ContentAsString();
TXTID.Text := COVID.Result.ResourceId ;
end;
เท่านี้ก็เรียบร้อย
ผมเอา code ขึ้นไว้ที่ https://github.com/piyanatn/DelphiJSONToClass
คราวหน้าผมจะเอาวิธี ดึงข้อมูลจากหลายๆRecord (TRecord) มาทำเป็นตัวอย่างให้ดูครับ