คอมพิวเตอร์และอินเตอร์เน็ต,บรรยายวิชาการ,วิจัย,ศึกษากุรอาน,E-Book

วันพฤหัสบดีที่ 21 มีนาคม พ.ศ. 2567

การนำข้อมูล JSON จาก API มาใช้งาน

 



โดยทั่วไป API Endpoint จะ Response ข้อมูลออกมาใน Format เป็น JSON มาผ่านทางหน้าจอของ Browser หรือสามารถดูได้จากการใช้งาน Postman ซึ่งจะมี 2 รูปแบบ
ref : https://www.w3schools.com/whatis/whatis_json.asp

1.JSON Objects  -ข้อสังเกตุ : ไม่มี [  ] ครอบข้อมูล

SON objects are written inside curly braces. Just like in JavaScript, objects can contain multiple name/value pairs:

{"firstName":"John""lastName":"Doe"}

 2.JSON Arrays   -ข้อสังเกตุ :  มี [  ] ครอบข้อมูล

JSON arrays are written inside square brackets. Just like in JavaScript, an array can contain objects:

"employees":[
    {"firstName":"John""lastName":"Doe"},
    {"firstName":"Anna""lastName":"Smith"},
    {"firstName":"Peter""lastName":"Jones"}
]

Remark : use the JavaScript built-in function JSON.parse() to convert the string into a JavaScript object

ฉะนั้นการจพนำข้อมูลมาใช้งาน ต้องรู้ก่อนว่า Response มาใน Format ใด แล้วจึงจะสามารถเรียกใช้ได้ ดังเช่นตัวอย่างต่อไปนี้

1.กรณีที่ endpoint ส่ง response มาเป็น JSON Objects 

const res = fetch(mlink);

const json =  res.json(); 

console.log(json);  


2.กรณีที่ endpoint ส่ง response มาเป็น JSON Arrays 

const res = fetch(mlink);

const arrData = await res.json(); //ค่าที่รับเป็น array

const json = Object.assign({}, arrData[0]); //convert array to object 

// arrData[0] เป็นตำแน่งที่อยู่ของข้อมูล

console.log(json);  


หมายเหตุ : กรณีใช้ axios ก็เช่นเดียวกัน แต่จะสะดวกกว่า


ตัวอย่างของ Endpoint

if($rowcount>0){

   while ($row = mysqli_fetch_assoc($result)) {

      //$response = $row;  //เตรียมส่งค่า response เป็น JSON Objects

      $response[] = $row;  //เตรียมส่งค่า response เป็น JSON Arrays

  }

}else{

  //$response['code'] =  '400';           //เตรียมส่งค่า response เป็น JSON Objects

  //$response['status'] = 'NOT FOUND';    //เตรียมส่งค่า response เป็น JSON Objects

  $response[]=array('code'=>'400','status'=>'NOT FOUND'); //response JSON Arrays

}    

echo json_encode($response, JSON_UNESCAPED_UNICODE); //แสดงข้อมูลเป็นภาษาไทย