Delphi เทคนิค ดึงค่า ที่รับ JSON จาก API ลง Class

Piyanat Nimkhuntod
3 min readOct 3, 2022

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

https://jsontodelphi.com/

JSON นั้นมีชื่อเต็มๆว่า JavaScript Object Notation โดยจะได้มาจากการเรียก API แล้ว ได้รับการตอบกลับผลลัพธ์มาเป็น JSON

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

https://data.go.th/dataset/covid-19-daily

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

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

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

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

https://opend.data.go.th/get-ckan/datastore_search?resource_id=4688036a-cd89-45f7-a0c3-a34dbe35a50c&limit=5

ตรง 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) มาทำเป็นตัวอย่างให้ดูครับ

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Responses (1)

Write a response