လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> json_decode () ကို binary data အဖြစ် package

json_decode () ကို binary data အဖြစ် package

M66 2025-05-31

PHP Development တွင်အထူးသဖြင့်ကွန်ယက်မှုတ်ထုတ်လွှင့်ခြင်းသို့မဟုတ်ဖိုင်သိုလှောင်မှုနှင့်သက်ဆိုင်သည့်အခါအချက်အလက်များကို encode လုပ်ရန်နှင့် decode လုပ်ရန်လိုအပ်သည်။ JSON_DECODED () သည် JSON အချက်အလက်များကို PHP Array သို့မဟုတ်အရာဝတ်ထုများသို့ခွဲခြမ်းစိတ်ဖြာခြင်းကို php array များသို့မဟုတ်အ ရာ ဝတ်ထုများသို့ခွဲခြမ်းစိတ်ဖြာခြင်းအတွက်ဘုံလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ JSON_DECode () ကို Pack ကို အသုံးပြု. Binary Data သို့ရရှိသောရရှိသောရလဒ်များကိုမည်သို့စီစဉ်ရမည်ကိုဤဆောင်းပါးတွင်အသေးစိတ်ရှင်းပြပါလိမ့်မည်။


1 ။ JSON_Decode () နှင့်ထုပ်ပိုးခြင်း ()

  • JSON_Decode (string $ json, bool $ accel = true)
    JSON string ကိုခွဲခြမ်းစိတ်ဖြာခြင်းသည်ဒုတိယ parameter သည် မှန် သည်

  • ထုပ်ပိုး (string $ format, ရောနှော $ args ... )
    parameters တွေကို format ဇာတ်ကောင်အပေါ်အခြေခံပြီး binary strings အဖြစ် parameters တွေကိုထုပ်ပိုး။ ပုံစံဇာတ်ကောင်တစ်ခုချင်းစီရဲ့ parameter သည်၏အမျိုးအစားနှင့်အရှည်ဆုံးဖြတ်သည်။

2 ။ မြင်ကွင်းဥပမာများ

အောက်ဖော်ပြပါ JSON အချက်အလက်များရှိသည်ဆိုပါစို့:

 {
  "id": 123,
  "temperature": 36.5,
  "status": 1
}

JSON_Decode () ကို သုံးရန်အတွက်၎င်းကို array ထဲသို့ပြောင်းလဲရန်အတွက်၎င်းကိုအဆင်ပြေသောကွန်ရက်ထုတ်လွှင့်ရန်အတွက် binary data ထဲသို့ထည့်ရန် Pack () ကို အသုံးပြုရန်မျှော်လင့်ပါသည်။


3 ။ နမူနာကုဒ်ရှင်းပြချက်

 <?php
// JSON အချက်များ
$json = '{"id":123,"temperature":36.5,"status":1}';

// အသုံးပြု json_decode Associative Array အဖြစ်ဆုံးဖြတ်ပါ
$data = json_decode($json, true);

// ခွဲခြမ်းစိတ်ဖြာခြင်းရလဒ်များကိုအတည်ပြုပါ
// var_dump($data);

// 假设အချက်များ格式如下:
// id: 32လက်မှတ်မထိုး integer (N)
// temperature: floating အမှတ်နံပါတ်,32ယူနစ်တိကျမှန်ကန်မှု (f)
// status: 8လက်မှတ်မထိုး integer (C)

// မှတ်သား:pack မပံ့ပိုးပါ 64位floating အမှတ်နံပါတ်格式,只能အသုံးပြု单精度或双精度(d)
// ဒီမှာတစ်ခုတည်းတိကျမှုကိုရွေးချယ်ပါ(f)

$binary = pack(
    'NfC',           // ဇာတ်ကောင် format:N - 32bit endianness အတွက်လက်မှတ်မထိုးသည့်ကိန်းဂဏန်းများ, f - floating အမှတ်နံပါတ်, C - 8လက်မှတ်မထိုး integer
    $data['id'],
    $data['temperature'],
    $data['status']
);

// 输出二进制အချက်များ的十六进制表示,ကြည့်ရှုရန်လွယ်ကူသည်
echo bin2hex($binary);
?>

4 ။ ကုဒ်ဖော်ပြချက်

  • N သည် 32-bit-endian Integer (Network Enterian Integer (Network endian) ကိုကိုယ်စားပြုသည်။

  • f သည် 32-bit တစ်ခုတည်း - တိကျသောရေပေါ်အမှတ်နံပါတ်ကိုကိုယ်စားပြုသည်။

  • C သည် 8-bit IFFIGNED Integer ကိုကိုယ်စားပြုသည်။

ဤနေရာတွင် ID ကို Network Enterian Integer တစ်ခုအနေဖြင့်ထုပ်ပိုးပြီး အပူချိန်သည် floating point နံပါတ်ဖြစ်ပြီး status သည် byte ဖြစ်သည်။


5 ။ Binary Data မှဥပမာ unpacking ဥပမာ

ထုပ်ပိုးခြင်း၏မှန်ကန်မှုကိုအတည်ပြုရန်သင် ဖြည့်စွက် () function ကိုဖြည့်ဆည်းပေးနိုင်သည်။

 <?php
// 之前打包后的二进制အချက်များ
$binary = pack('NfC', 123, 36.5, 1);

// ဘော့ပီတာပိတ်ဆို့ခြင်း,ဇာတ်ကောင် format必须与打包时对应
$unpacked = unpack('Nid/ftemperature/Cstatus', $binary);

print_r($unpacked);
?>

ထုတ်လုပ်မှု -

 Array
(
    [id] => 123
    [temperature] => 36.5
    [status] => 1
)

6 ။ ရှုပ်ထွေးသောဂျွန်ဆင်အဆောက်အအုံများကိုကိုင်တွယ်ပါ

JSON တွင်ရှုထောင့်အမျိုးမျိုးသို့မဟုတ်ကြိုးများပါ 0 င်ပါကသင်ပထမ ဦး ဆုံး binary format ကိုဒီဇိုင်းဆွဲရန်လိုအပ်သည်။ ဘုံအလေ့အကျင့်များမှာ:

  • fixed အရှည်အကွက်များကိုပုံသေပုံစံဖြင့်ထုပ်ပိုးထားသည်။

  • ကြိုးများ ('n', strlen ('strlen) ကဲ့သို့သောအရှည် + အကြောင်းအရာကိုထုပ်ပိုးထားသည်။ $ str ;

  • ခင်းကျင်းထုပ်ပိုးကွင်းဆက်။

ဥပမာ -

 <?php
$json = '{"users":[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]}';
$data = json_decode($json, true);

$binary = '';
foreach ($data['users'] as $user) {
    $id = $user['id'];
    $name = $user['name'];
    $nameLen = strlen($name);
    $binary .= pack('N', $id);          // id 4ဒရယ်
    $binary .= pack('N', $nameLen);     // အမည်အရှည် 4ဒရယ်
    $binary .= $name;                   // Name String
}

echo bin2hex($binary);
?>

7 ။ အကျဉ်းချုပ်

  • JSOR_DECODED () JSOSS strings php arrays သို့ခွဲထုတ်;

  • Custom format အညီ Pack () ဒေတာများကို binary သို့ထုပ်ပိုးထားသည်။

  • ပုံစံကိုဒီဇိုင်းပြုလုပ်ရန်လိုအပ်သည်, လယ်ကွင်းအရှည်နှင့်အမျိုးအစားကိုစဉ်းစားရန်လိုအပ်သည်, အထူးသဖြင့် string သည်၎င်း၏ကိုယ်ပိုင်အလျင်အမြန်သတင်းအချက်အလက်လိုအပ်သည်။

  • ဒေတာ၏မှန်ကန်မှုကိုအတည်ပြုရန် unpack () နှင့်အတူပေါင်းစပ်။

Pack -functions ၏အသေးစိတ်ပုံစံအမျိုးမျိုးအသေးစိတ်အချက်အလက်များအတွက် တရားဝင် PHP စာရွက်စာတမ်းများကို ဖတ်ရှုပါ။