JSON မှ Excel (XLSX) သို့ ပြောင်းလဲခြင်း အကိုးအကား
JSON နှင့် Excel XLSX အကြား အခြေခံဖွဲ့စည်းပုံကွာခြားချက်များ
JSON (JavaScript Object Notation) သည် စာသားကုဒ်ဖြင့် ရေးသားထားသော ဒေတာဖော်မတ်ဖြစ်ပြီး object, array, string, number, boolean နှင့် null တို့ကို ကိုင်တွယ်နိုင်သည်။ XLSX ဖော်မတ်မှာ ZIP ဖြင့်ချုံ့ထားသော XML workbook ဖြစ်ကာ ဆဲလ်တစ်ခုချင်းစီမှာ သီးသန့်ဒေတာအမျိုးအစားများ (number, boolean, string) ကို သိမ်းဆည်းနိုင်သည်။ CSV ကဲ့သို့သော ဖော်မတ်များနှင့်မတူဘဲ XLSX တွင် ဒေတာအမျိုးအစားများကို မူလအတိုင်း ထိန်းသိမ်းနိုင်ခြင်းကြောင့် ဂဏန်းများနှင့် boolean တန်ဖိုးများကို စာသားအဖြစ်သို့ ပြောင်းလဲသွားခြင်းမရှိဘဲ ထိမ်းသိမ်းပေးနိုင်သည်။
သို့သော် JSON သည် အထက်အောက်အဆင့်ဆင့် (hierarchical) ဖွဲ့စည်းပုံရှိနိုင်ပြီး Excel စာရွက်တစ်ချပ်သည် ပြားချပ်သော (flat) ဇယားဖြစ်သည်။ ဥပမာအားဖြင့် JSON ထဲတွင် object တစ်ခုအတွင်း အခြား object တစ်ခုရှိပါက၊ သို့မဟုတ် array တစ်ခုရှိပါက၊ ၎င်းကို ဇယားတစ်ခုတည်းတွင် တိုက်ရိုက်ဖော်ပြ၍မရပါ။ ဤကိရိယာသည် JSON ရှိ အဆင့်ဆင့်ဖွဲ့စည်းပုံကို dot-path ကော်လံအမည်များဖြင့် ပြားချပ်အောင်ပြုလုပ်ပေးသည်။
Dot-Path Flattening လုပ်ငန်းစဉ်
JSON မှ ဇယားသို့ ပြောင်းလဲရာတွင် ကိရိယာသည် object array ကို အတန်းများအဖြစ် သတ်မှတ်သည်။ object တစ်ခုစီသည် အတန်းတစ်တန်းဖြစ်လာပြီး ၎င်း၏ key များသည် ကော်လံခေါင်းစဉ်များဖြစ်လာသည်။ အကယ်၍ object တစ်ခုတွင် အခြား object တစ်ခုရှိပါက (ဥပမာ address field အတွင်းရှိ city, street)၊ ၎င်းတို့ကို dot-path အမည်များ (ဥပမာ address.city, address.street) အဖြစ် ပြောင်းလဲသည်။
ဥပမာ
Input JSON:
[
{
"name": "Aung",
"age": 30,
"address": {
"city": "Yangon",
"district": "Botahtaung"
},
"scores":
},
{
"name": "Hla",
"age": 25,
"address": {
"city": "Mandalay",
"district": "Chanmyathazi"
},
"scores":
}
]
Output Table (ဇယား):
| name | age | address.city | address.district | scores |
|---|---|---|---|---|
| Aung | 30 | Yangon | Botahtaung | 85,92,78 |
| Hla | 25 | Mandalay | Chanmyathazi | 91,88 |
ဤနေရာတွင် address object သည် dot-path ကော်လံနှစ်ခုအဖြစ်ပြိုကွဲသွားပြီး scores array သည် string အဖြစ်သို့ပြောင်းလဲသွားသည်ကိုတွေ့ရသည်။ array of arrays ကိစ္စတွင် ကိရိယာသည် array တစ်ခုစီကို အတန်းတစ်တန်းအဖြစ်သတ်မှတ်ပြီး array ရှိဒြပ်စင်များကို ကော်လံများအဖြစ်ထည့်သွင်းသည်။
Data Types Mapping နှင့် Edge Cases
XLSX ဖိုင်တွင် ဆဲလ်တစ်ခုစီအတွက် သီးသန့်ဒေတာအမျိုးအစားများရှိသော်လည်း ကိရိယာသည် ဖော်မြူလာ (formulas) သို့မဟုတ် ဆဲလ် styling ကိုထိန်းသိမ်းမထားပါ။ static data သာလျှင် ကူးယူသည်။
- Null တန်ဖိုး: JSON ရှိ
nullသည် Excel တွင် empty cell အဖြစ်ပေါ်လာသည်။ - Boolean တန်ဖိုး:
trueနှင့်falseသည် XLSX ၏ native boolean type ကိုအသုံးပြုသည်။ - ဂဏန်းများ: JSON ရှိ number type သည် XLSX ၏ number type သို့မူလအတိုင်းပြောင်းလဲပြီး decimal places များကိုထိန်းသိမ်းသည်။
- Array of arrays: ဤကိစ္စတွင် dot-path မသုံးဘဲ တန်းတန်းမတ်မတ် row-column mapping ကိုအသုံးပြုသည်။
- ဖိုင်အကြီးအကျယ်: ဖိုင်အရွယ်အစား ကန့်သတ်ချက်များရှိပြီး 8 MB ထက်ပိုလျှင် error message ပြသည်။ ကိရိယာသည် client-side လုပ်ဆောင်ချက်ဖြစ်သောကြောင့် browser ၏ memory နှင့်အင်တာနက်မြန်နှုန်းအပေါ်မူတည်သည်။
Client-Side Processing နှင့် Data Privacy
ဤတူးလ်သည် JSON ကို XLSX သို့ပြောင်းရန် browser ထဲတွင်သာ လုပ်ဆောင်သည်။ ဤလုပ်ငန်းစဉ်တွင် ဖိုင်တစ်စုံတစ်ရာကို server သို့မပို့ပါ။ ၎င်းသည် data privacy အတွက်အရေးကြီးသောအချက်ဖြစ်သည်။ သင်သည် လျှို့ဝှက်ဒေတာပါသော JSON ဖိုင်များကို အခြား online service များတွင် အပ်လုဒ်မလုပ်ချင်ပါက ဤကိရိယာကိုအသုံးပြုနိုင်သည်။
ဖြစ်နိုင်သော Error Messages များနှင့် အကြောင်းရင်းများ
ဤကိရိယာသည် အောက်ပါအခြေအနေများတွင် error message များပြသည်။
| Error Message | အကြောင်းရင်း |
|---|---|
| "Choose a CSV, JSON or XLSX file." | ဖိုင်အမျိုးအစားမှားယွင်းခြင်း |
| "This file is too large. Use a file under ‹max›." | ဖိုင်အရွယ်အစား ကန့်သတ်ချက်ထက်ကျော်လွန်ခြင်း |
| "This JSON is invalid or not table-shaped." | JSON သည် table-shaped မဟုတ်ခြင်း (ဥပမာ object array မဟုတ်) |
| "This file has no table rows." | JSON တွင် object သို့မဟုတ် array မရှိခြင်း |
| "This table has more than ‹max› rows." | အတန်းအရေအတွက်ကန့်သတ်ချက်ထက်ကျော်လွန်ခြင်း |
| "This table has more than ‹max› columns." | ကော်လံအရေအတွက်ကန့်သတ်ချက်ထက်ကျော်လွန်ခြင်း |
| "Conversion cancelled." | အသုံးပြုသူက လုပ်ငန်းစဉ်ကိုဖျက်သိမ်းခြင်း |
| "This conversion is taking too long. Try a smaller file." | ဖိုင်ကြီးလွန်း၍ သို့မဟုတ် ရှုပ်ထွေးလွန်း၍ အချိန်ကြာမြင့်ခြင်း |
Flat Table ၏ ကန့်သတ်ချက်များ
JSON တွင် nested array (ဥပမာ array အတွင်းရှိ array များ) သို့မဟုတ် deep nesting ရှိပါက flat table တစ်ခုတည်းတွင် မဖော်ပြနိုင်ပါ။ ဥပမာအားဖြင့် JSON တွင် "orders": [{"id": 1, "items": [{"name": "book", "price": 100}]}] ရှိပါက items array ကို column တစ်ခုတည်းတွင် string အဖြစ်ထည့်သွင်းနိုင်သည် သို့မဟုတ် row duplication ဖြစ်ပေါ်နိုင်သည်။ ဤကိရိယာသည် အဆိုပါကိစ္စများအတွက် အလိုအလျောက်ဖြေရှင်းပေးမည်မဟုတ်ပါ။
အမေးများသောမေးခွန်းများ (FAQ)
1. JSON မှာ nested array ရှိရင် ဘယ်လိုဖြစ်မလဲ။
nested array ကို string အဖြစ်ပြောင်းလဲပြီး column တစ်ခုတည်းတွင်ထည့်သွင်းသည်။ array ရှိဒြပ်စင်များကို comma ဖြင့်ခွဲခြားပြီး text string အဖြစ်ထည့်သွင်းသည်။
2. ကိရိယာသည် မည်သည့်ဖိုင်အမျိုးအစားများကို input အနေဖြင့်လက်ခံသနည်း။
ဤကိရိယာသည် JSON ဖိုင်များကိုသာလက်ခံသည်။
3. ဖိုင်ကြီးလွန်းပါက ဘာလုပ်ရမလဲ။
ကိရိယာသည် browser ၏ memory ကိုသုံးသောကြောင့် ဖိုင်ကြီးပါက "This file is too large. Use a file under ‹max›." error message ပြသည်။ သေးငယ်သောဖိုင်ကိုရွေးပါ သို့မဟုတ် JSON ကိုအပိုင်းပိုင်းခွဲ၍အသုံးပြုပါ။
4. Output XLSX ဖိုင်တွင် formula များရှိမလား။
မရှိပါ။ ကိရိယာသည် static data သာလျှင်ရေးသားပြီး formula သို့မဟုတ် cell formatting ကိုမထည့်သွင်းပါ။
5. ကိရိယာသည် တစ်ကြိမ်လျှင် ဖိုင်မည်မျှအထိပြောင်းလဲနိုင်သနည်း။
တစ်ကြိမ်လျှင် ဖိုင်တစ်ခုသာလျှင်ပြောင်းလဲနိုင်သည်။ multiple file conversion ကိုမထောက်ပံ့ပါ။