Site icon PlusMagi's Blog By Pitt Phunsanit

MySQL: return json format

mysql ก็ support json เพราะว่าเดี๋ยวนี้อะไร ๆ ก็แลกเปลี่ยนข้อมูลกันโดยใช้ json ถ้าสามารถ query จาก mysql ให้ result ออกมาเป็น json เลย ก็สะดวกที่จะไม่ต้องใช้ java หรือ BeanShell ใน joget แปลงผลลัพธ์ให้ยุ่งยาก แค่มี input ซักตัวก็สามารถนำมันไปใช้ได้เลย

เริ่มจากการที่เขียน query ตามปกติเพื่อเลือกข้อมูลที่ต้องการ เช่น

SELECT
 *
FROM
 snippets.province
ORDER BY PROVINCE_NAME ASC;

จะเห็นว่ามี column PROVINCE_ID, PROVINCE_CODE, PROVINCE_NAME และ GEO_ID ทีนี้จะแปลง ให้เป็นรูปแบบ json array โดยใช้ JSON_OBJECT วิธีการใช้คือ

SELECT JSON_OBJECT('name1', value1, 'name2', value2, 'name3', value3);

คือ

SELECT
 JSON_OBJECT('PROVINCE_ID',
   PROVINCE_ID,
   'PROVINCE_CODE',
   PROVINCE_CODE,
   'PROVINCE_NAME',
   PROVINCE_NAME,
   'GEO_ID',
   GEO_ID) AS json
FROM
 snippets.province
ORDER BY PROVINCE_NAME ASC;

ค่าค่อยดูเป็น json ขึ้นมาหน่อย แต่มันยังอยู่คนละแถว ไม่เป็นไรมีตัวช่วย

SELECT
 CONCAT('[',
   GROUP_CONCAT(JSON_OBJECT('PROVINCE_ID',
      PROVINCE_ID,
      'PROVINCE_CODE',
      PROVINCE_CODE,
      'PROVINCE_NAME',
      PROVINCE_NAME,
      'GEO_ID',
      GEO_ID)),
   ']') AS json
FROM
 snippets.province
ORDER BY PROVINCE_NAME ASC;

แค่นี้ก็ได้ result เป็น json สมใจ อ่านตัวอย่างการใช้ได้ที่ javascript: string to JSON.parse()

Exit mobile version