Wow… JSON

JSON ကို ကျွန်တော်တို့တွေ နေရာစုံမှာ အသုံးပြုကြပါတယ်။ အရင်တုန်းကတော့ ကျွန်တော်သိတာက JSON ကို web service တွေမှာ အဓိက သုံးတယ်ပေါ့။  တကယ်တန်းတော့ မဟုတ်ပါ။ နေရာစုံမှာ သုံးနိုင်တယ်။ လိုအပ်သလို သုံးနိုင်တယ်။ အမြဲတန်းသုံးရမယ်မဟုတ်ဘူး။ ကျွန်တော်တို့ ကျောင်းမှာ သင်ခဲ့တုန်းက Database Design ရေးဆွဲတဲ့အခါမှာ 1NF , 2NF , 3NF ထိ သင်ဖူးပါတယ်။ သိပ်တော့ မမှတ်မိတော့ဘူး။ 3NF ထိလို့ထင်တာပဲ။ တကယ်တန်းတော့ 6NF ထိရှိပါတယ်။ သို့ပေမယ့် အဲလောက်ထိ မသုံးကြဘူး။ 3NF လောက်ထိ သိရင် အလုပ်ဖြစ်တယ်။ ဒါပေမယ့် JSON ကို သုံးပြီး Table တွေ လျော့ချဖို့ သို့မဟုတ် field တွေ လျော့ချဖို့တွေ မသင်ခဲ့ပါဘူး။ ဒါတွေက အတွေ့အကြုံတွေက သင်လာခဲ့တာပါ။

ပြီးခဲ့တဲ့ project တုန်းက အင်ဒိုဘက်က Developer နဲ့ ဒီဘက်က developer ရယ် ဆွဲတာ။ ကျွန်တော်တို့က အင်ဒိုနဲ့ စလုံး ၂ နေရာမှာ ရှိတော့ project ကြီးပြီး လူမလောက်ရင် အင်ဒိုဘက်ကို ပေးပြီးဆွဲခိုင်းတာတွေ ရှိတယ်။ ကျွန်တော် ရုံးရောက်ပြီးသိပ်မကြာဘူး အင်ဒိုဘက်က developer အစား ဝင်လုပ်ရတယ်ခေါ်မလားပဲ။ သေသေချာချာတော့ မသိ။ ဒီ project လုပ်ရမယ်ဆိုတော့ လုပ်ပေါ့။ အဲမှာ သွားပြီး သတိပြုမိတာက အရင် developer က facebook profile တစ်ခုလုံးကို JSON ပြောင်းပြီး Database ထဲ သိမ်းသွားတာပဲ။ facebook profile database မှာ ဘယ်မှာ သွားသိမ်းလဲဆိုပြီး table တွေမှာ ရှာလိုက်ရတာ။ နောက်ဆုံး field တစ်ခုထဲမှာ JSON နဲ့ ထည့်ပြီး သိမ်းထားတာပဲ။ အဲတုန်းက နားမလည်ဘူး။ ဘာလို့ သွားသိမ်းရတာလဲပေါ့။

အခုအချိန်မှာတော့ ကောင်းကောင်းလေး နားလည်သွားပါပြီ။ နောက်ပြီး ပြီးခဲ့တဲ့ Drupal custom project တုန်းကလည်း Drupal ကို Customize တော်တော်လေး လုပ်လိုက်ရသေးတယ်။ ကျွန်တော်က wordpress သမားဆိုတော့ ဟိုကလိ ဒီကလိ နဲ့ လုပ်ရတာပဲ။ အဲတုန်းက ထုံးစံအတိုင်းပဲ ရှေ့က developer လုပ်သွားတာကို ပြင်ရတာပဲ။ အဲမှာ သွားပြီးတော့ သတိထားမိတာက Drupal module တစ်ခုမှာ Setting တွေကို JSON နဲ့ သွားသိမ်းထားတယ်။ Database တစ်ခုလုံး အကုန်လှန်မှောက်ကြည့်လိုက်တော့ တော်တော်များများက JSON ကို field ထဲမှာ သွားသွားသိမ်းထားတာပဲ။ အဲတုန်းကလည်း မဆိုးဘူးရယ်ပေါ့။ ဘယ်အချိန် ဘယ်လို သုံးရမလဲဆိုတာတော့ သေသေချာချာ မသိသေးပါ။

ဒီနေ့တော့ သဘောပေါက်သွားပြီ။ project မှာ Cron Job UI အတွက် ရေးတော့ လုပ်ခဲ့တဲ့ schedule setting ကို မှတ်ဖို့ လိုလာပါလေရော။ အဲဒီမှာ ရှေ့က လူတွေ လုပ်ခဲ့တာတွေ အကုန် သဘောပေါက်သွားတာပဲ။

ပုံမှန် user တစ်ယောက် အတွက် cron job detail အကုန်မှတ်ဖို့လိုတယ်။ hour, minute , second နောက်ပြီး date, month,week စတာတွေကိုပေါ့။ အဲဒီ data တွေကို search လုပ်မှာလည်း မဟုတ်ဘူး။ filter လုပ်ဖို့လည်း မလိုအပ်ဘူး။ အဲဒီအတွက် field ထပ်ဆောက်ရင် database ကို loop ပတ်တာတွေ field တစ်ခုခြင်းဆီကနေ ဆွဲထုတ်ရမှာတွေ ထပ်လာအုံးမယ်။ table ခွဲရင် ပိုတောင် အလုပ်ရှုပ်အုံးမယ်။ အဲဒီတော့ ဘာသွားသတိရလဲဆိုတော့ JSON ကို သွားသတိရလိုက်တယ်။

အကုန်လုံးကို array ထဲထည့်ပြီး JSON encode လုပ်လိုက်တော့ string data type ဖြစ်တဲ့ JSON ဖြစ်သွားရော။ string ဖြစ်သွားတော့ field ထဲကို ထည့်လိုက်ရုံပဲ။ ဟော ပြန်ထုတ်တော့လည်း field တစ်ခုပဲ select လုပ်ပြီး ကောက်ထုတ်လိုက်။ ရတဲ့ string ကို JSON decode လုပ်လိုက်တော့ array ပြန်ဖြစ်သွားရော။ ဒီတော့ လွယ်လွယ်ကူကူပြန်သုံးလို့ရသွားပြန်ကော။ table တွေ field တွေ အများကြီး ဆောက်စရာမလိုပဲ field တစ်ခုထဲနဲ့ အကုန်ပြီးသွားတယ်။ ကျွန်တော် သုံးထားတဲ့ code လေးကို ပြန်ပြလိုက်တယ်။

$c["enable"]=false;
$c["minu"]="";
$c["hour"]="";
$c["days"]="";
$c["months"]="";
$c["weeks"]="";
$schedule=json_encode($c);
$data["schedule"]=$schedule;
$database->update("user",$data,"ID=".$_SESSION['usr_id']);

အကုန်လုံးကို array ထဲမှာ ထည့်ပြီးတော့ json encode ပြောင်းတယ်။ ပြီးတော့ database ထဲ ကောက်ထည့်လိုက်ရုံပဲ။ ပြန်ထုတ်တော့လည်း ဒီလိုပဲ။

$where="`ID`=".$_SESSION['user_id'];
$result=$database->select("schedule","user",$where);
if($database->num_rows()>0)
{
foreach($result as $row)
{
$schedule=json_decode($row["schedule"],true);
}
}

ပြန်ထုတ်ရင်တော့ json_decode နောက်မှာ true ဆိုတာလေး ပါဖို့လိုတယ်။ မပါရင် object ဖြစ်သွားပါတယ်။ အဲဒါတွေက PHP manual မှာ ဖတ်လို့ရပါတယ်။ အဲဒီတော့ ကျွန်တော့် အနေနဲ့ code တွေ အများကြီးမလိုသလို loop တွေ အများကြီးလည်း မလိုတော့ဘူး။

အဲဒီတော့ ဟိုးအရင်က လုပ်ခဲ့တဲ့ project တွေကို သွားသတိရတယ်။ data က ရှာမှာ မဟုတ်ဘူး။ မှတ်ထားရုံပဲ။ filter တွေ search တွေ မလုပ်ဘူး။ အဲဒါဆိုရင် JSON format နဲ့ database ထဲမှာ ကောက်သိမ်းလိုက်ရုံပဲ။

ဥပမာ။ user တစ်ယောက်ရဲ့ Setting တွေက Site ထဲမှာ Searching လုပ်မှာမဟုတ်ဘူး။ Filter လည်းလုပ်မှာမဟုတ်ဘူး။ user တစ်ယောက်ရဲ့ Setting ကို မှတ်ထားရုံပဲ။ facebook လိုမျိုး Profile အများကြီးထည့်ထားမယ်ဆိုရင် profile တစ်ခုလုံးကို JSON နဲ့ သိမ်းလိုက်ပါတယ်။ ကျွန်တော် ရှေ့က လုပ်ခဲ့တဲ့ Project ကလည်း Social Site တစ်ခုပါပဲ။ အဲမှာလို setting တွေ profile တွေ အားလုံးကို JSON နဲ့ သိမ်းလိုက်တယ်။ ရှာဖို့အတွက် ဖြစ်တဲ့ Name, Place စတာတွေလောက်ပဲ field အနေနဲ့ အသုံးပြုတာပေါ့။

အခုဆိုရင်တော့ JSON က ကျွန်တော်တို့ထင်တာထက် ပိုအသုံးဝင်တယ်ဆိုတာ သိလောက်မှာပါ။ JSON က ခက်ခဲတဲ့အရာတစ်ခုမဟုတ်သလို အရမ်းလည်း လွယ်ပါတယ်။ array ကြီးကို ကျွန်တော်တို့ database field ထဲမှာ သွားသိမ်းလို့မရပေမယ့် array ကို JSON ပြောင်းပြီး သွားသိမ်းလိုက်ခြင်းက array ကို သွားသိမ်းလိုက်သလိုပါပဲ။ JSON နဲ့XML မတူတာက အဲဒီ အပိုင်းတွေပါ။ XML format တွေဆိုရင် ကျွန်တော်တို့ DOM ဖြစ်တော့ နည်းနည်းပိုရှုပ်တယ်။ XML လည်း သူ့နေရာနဲ့ သူ အသုံးဝင်ပါတယ်။ JSON ကတော့ jquery မှာ ဖြစ်ဖြစ် PHP မှာ ဖြစ်ဖြစ် လွယ်လွယ်ကူကူ အသုံးပြုလို့ရတော့ အရင်တုန်းကထက်စာရင် အများကြီး အဆင်ပြေပါတယ်ဗျာ။

စာကြွင်း ။ ။ code ကို run လျှင် ရမည်မဟုတ်။ database class မရှိသောကြောင့်ဖြစ်၏။

3 Comments

  1. ကျေးဇူးအရမ်းတင်ပါတယ်..

  2. myoaung says:

    အကိုရေ လုံလုံလောက်လောက်လေ့လာဖို့အတွက် စာအုပ်လေးများရှိရင်မျှပါဥိးဗျာ အခုဟာကလဲလုံလောက်ပါတယ် ဒါပေမဲ့ ပိုမိုသိချင်လာလို့ပါ

    1. saturngod says:

      if you are using AJAX or API, you will know about JSON.

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.