Penukar PHP Array ke JSON

Tukar PHP array kepada JSON dan JSON kepada PHP array dalam talian

Semua penukaran dilakukan secara setempat dalam pelayar anda. Data anda tidak pernah dihantar ke mana-mana pelayan.

Advertisement

Panduan terperinci

Array PHP dan JSON: cara pemetaan, dan apa yang sebenarnya dibaca penukar ini

Penjelasan teruji tentang halaman ini: langkah penulisan semula teks di sebalik PHP ke JSON, input yang berjaya dan yang gagal, bahaya escape dalam output JSON ke PHP, dan peraturan sebelah PHP (json_encode, json_decode, var_export) yang digunakan apabila ketepatan penting.

Kali terakhir disahkan: Versi Markdown (untuk AI)

Angka utama sepintas lalu

Input PHP ke JSON yang berfungsi
Senarai sintaks pendek dan teks seperti JSON
Contohnya ['a','b'], [1,2,3,] dan [[1,2],[3]]. Teks JSON biasa juga lulus.
Input PHP ke JSON yang gagal
Apa-apa dengan => atau array( ... )
Halaman menukar => kepada titik dua dan array( kepada [ tetapi tidak pernah kurungan penutup, jadi tatasusunan kunci/nilai dan array() ditolak sebagai tidak sah.
Output JSON ke PHP
Rentetan petikan berganda, inden 4 ruang, => untuk objek
Hanya petikan berganda yang di-escape dalam rentetan; $ atau garis condong terbalik dalam data tidak.
Pilihan var_export
Tidak mengubah apa-apa
Output sama ada kotak ditanda atau tidak, dan bukan format sebenar var_export.

Menukar array PHP kepada JSON dengan boleh dipercayai

Biar PHP menghurai PHP; gunakan halaman untuk bahagian JSON.

  1. Langkah 1: Kodkan dalam PHP

    Jalankan json_encode($array, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) dalam skrip atau REPL anda sendiri.

  2. Langkah 2: Semak JSON

    Tampal hasilnya ke pengesah untuk mengesahkan ia boleh dihurai dan melihat ralat khusus kedudukan.

  3. Langkah 3: Format semula jika perlukan gaya lain

    Gunakan pemformat untuk inden 4 ruang atau tab, atau pemadat untuk satu baris.

Apa yang sebenarnya dilakukan halaman ini

Tiada arah menggunakan penghurai PHP. Kedua-duanya berjalan dalam pelayar dan tiada yang memuat naik apa-apa, tetapi arah PHP ke JSON ialah rantaian pendek penggantian teks diikuti JSON.parse:

  1. Pangkas teks dan padam sebarang <?php dan ?>.
  2. Gantikan setiap array( dengan [. ) yang berpadanan tidak disentuh.
  3. Gantikan setiap => dengan :.
  4. Gantikan setiap petikan tunggal ' dengan petikan berganda ".
  5. Padam koma yang berada sebelum ] atau } penutup.
  6. Hurai sebagai JSON dan cetak, cantik (2 ruang) atau padat.

Apa sahaja yang selamat melalui saluran itu sebagai JSON sah akan ditukar; selainnya gagal dengan "Ralat penukaran: Sintaks PHP array tidak sah: …" diikuti mesej JSON pelayar. Selepas kegagalan kotak output tidak dikosongkan, jadi ia mungkin masih menunjukkan hasil larian terdahulu. Baca baris status merah, bukan kotak itu.

Apa yang berjaya ditukar dan apa yang tidak

Keputusan di bawah diperoleh dengan menjalankan halaman.

Input PHP Hasil
['a','b','c'] berfungsi: ["a","b","c"]
[1, 2, 3,] berfungsi: [1,2,3] (koma hujung dibuang)
[true, false, null] berfungsi
[[1,2],[3]] berfungsi
{"a":1} (sudah JSON) berfungsi: tiada apa perlu ditulis semula
['name'=>'Mei','age'=>30] gagal: menjadi ["name":"Mei","age":30], yang bukan JSON
array('a','b') gagal: menjadi ["a","b")
['it\'s'] berjaya ditukar, tetapi salah: hasilnya it"s
["it's"] gagal: apostrof menjadi petikan tidak berpasangan
[TRUE, NULL] gagal: pemalar PHP tidak peka huruf besar, literal JSON peka
$x = [1];, return [1,2];, [1,2]; // note gagal: pernyataan, koma bertitik dan komen tidak difahami
[1=>'a', 2=>'b'], [0x1F, 010] gagal

Dalam amalan, arah PHP ke JSON hanya mengendalikan senarai biasa dan teks yang kelihatan seperti JSON. Penerangan dan FAQ halaman sendiri mendakwa lebih daripada ini; jangan bergantung padanya untuk tatasusunan bersekutu.

Output JSON ke PHP

Arah ini menghurai JSON dengan betul, kemudian mencetak kod sumber PHP. Output yang disahkan untuk {"a":1,"b":[1,2],"c":{"d":null}}:

[
    "a" => 1,
    "b" => [
        1,
        2
    ],
    "c" => [
        "d" => null
    ]
]

Tatasusunan JSON menjadi senarai, objek JSON menjadi "key" => value, dan {} menjadi []. Nyahtanda sintaks pendek untuk mendapat array( … ). Tiada awalan $var =, tiada koma bertitik di hujung dan tiada koma di hujung, jadi tambahkan sendiri. Tiga bahaya timbul kerana rentetan ditulis dalam petikan berganda PHP dengan hanya " yang di-escape:

  • Interpolasi pemboleh ubah: rentetan JSON "cost: $price" menjadi "cost: $price" dalam PHP, di mana $price digantikan dengan nilai pemboleh ubah (atau amaran pemboleh ubah tidak ditakrifkan). Begitu juga {$x}.
  • Garis condong terbalik: nilai JSON back\nslash (garis condong terbalik sebenar diikuti n, ditulis "back\\nslash" dalam JSON) dicetak sebagai "back\nslash", yang dibaca PHP sebagai baris baharu. Pemisah baris mentah disalin secara literal, yang tidak mengapa.
  • Kunci diberi petikan tetapi tidak di-escape, jadi kunci yang mengandungi " menghasilkan PHP tidak sah.

Nombor menggunakan format JavaScript: 1.0 menjadi 1 (int, bukan float), 1e21 menjadi 1e+21, 12345678901234567890 menjadi 12345678901234567000. Kotak tanda var_export tidak mengubah apa-apa. var_export sebenar mencetak rentetan petikan tunggal, array ( dengan ruang, kunci eksplisit untuk senarai (0 => 1,), NULL huruf besar dan koma di hujung.

Peraturan sebelah PHP yang berguna

Disemak dengan PHP 8.3:

PHP JSON
[1,2,3] [1,2,3]
['a'=>1] {"a":1}
[1=>'a',2=>'b'] {"1":"a","2":"b"} (kunci bukan 0..n-1)
[0=>'a',1=>'b'] ["a","b"] (kunci berturutan menjadikan senarai)
[] [] (tatasusunan kosong tidak pernah {}; gunakan new stdClass untuk itu)
1.0 1, atau 1.0 dengan JSON_PRESERVE_ZERO_FRACTION
"a/b é" "a\/b é" secara lalai; "a/b é" dengan JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE

json_decode($json, true) memulangkan tatasusunan bersekutu; tanpa true ia memulangkan objek stdClass. {"1":"a","2":"b"} dinyahkod kepada tatasusunan dengan kunci integer 1 dan 2, dan integer JSON melebihi PHP_INT_MAX seperti 12345678901234567890 dinyahkod kepada float. Koma di hujung menyebabkan json_decode memulangkan NULL dengan ralat "Syntax error".

Petua: Untuk apa-apa yang akan anda commit atau jalankan, hasilkan kod sumber PHP dengan var_export($data, true) dalam PHP sendiri, dan JSON dengan json_encode. Gunakan halaman ini untuk senarai pantas dan melihat struktur.

Kesilapan biasa

  • Menampal array('key' => 'value') atau ['key' => 'value'] dan terkejut dengan ralat.
  • Mempercayai kotak output selepas ralat; ia mungkin daripada penukaran terdahulu.
  • Menampal output JSON ke PHP ke dalam kod tanpa menyemak rentetan yang mengandungi $ atau garis condong terbalik.
  • Menjangka 1.0 atau perbezaan [] berbanding {} kekal dalam pusingan penuh.

Alat berkaitan

Sahkan atau bentuk semula JSON dengan pengesah JSON, pemformat JSON atau pemapar JSON, dan ratakan kepada laluan dengan JSON ke teks.

Advertisement

Soalan Lazim

Bagaimana saya menukar PHP array kepada JSON?

Pilih mod "PHP Array ke JSON", tampal kod PHP array anda (menggunakan sintaks [] atau array()), pilih format JSON pilihan anda (cantik atau padat) dan klik Tukar. Alat ini akan serta-merta menukar PHP array anda kepada format JSON yang sah.

Bolehkah saya menukar JSON kembali kepada PHP array?

Ya! Pilih mod "JSON ke PHP Array", tampal data JSON anda, pilih sintaks PHP pilihan anda (pendek [] atau tradisional array()) dan klik Tukar. Alat ini menyokong penukaran dua hala.

Apakah perbezaan antara sintaks PHP array pendek dan tradisional?

Sintaks pendek menggunakan tanda kurung siku [] dan tersedia dalam PHP 5.4+, manakala sintaks tradisional menggunakan array(). Contohnya: ["a" => 1] berbanding array("a" => 1). Kedua-duanya berfungsi sama, tetapi sintaks pendek lebih ringkas dan digunakan secara meluas dalam PHP moden.

Adakah alat ini mengendalikan array bersarang?

Ya, penukar ini menyokong sepenuhnya array dan objek bersarang pada apa-apa kedalaman. Ia mengendalikan struktur data kompleks dengan pelbagai tahap sarangan dengan betul.

Adakah jenis data dikekalkan semasa penukaran?

Ya, alat ini mengekalkan string, nombor, boolean (true/false) dan nilai null semasa penukaran. Associative arrays menjadi objek JSON, manakala numeric indexed arrays menjadi JSON arrays.

Adakah data saya dihantar ke pelayan?

Tidak, semua penukaran berlaku sepenuhnya dalam pelayar anda. Data anda tidak pernah meninggalkan peranti anda, menjadikan alat ini selamat sepenuhnya untuk maklumat sensitif seperti API keys atau data konfigurasi.

Apakah itu format var_export?

var_export ialah fungsi PHP yang menghasilkan representasi string boleh dihuraikan bagi sesuatu pemboleh ubah. Pilihan ini menjana kod PHP dalam format tepat seperti yang dikeluarkan oleh fungsi var_export() milik PHP, yang berguna untuk penjanaan kod dan penyahpepijatan.

Bolehkah saya menggunakan alat ini untuk JSON atau PHP array yang besar?

Ya, alat ini boleh mengendalikan struktur data yang besar. Namun, fail yang sangat besar (beberapa megabait) mungkin mengambil masa lebih lama untuk diproses bergantung pada prestasi pelayar dan peranti anda.

Apa yang berlaku jika PHP array atau JSON saya tidak sah?

Alat ini akan mengesahkan input anda dan memaparkan mesej ralat khusus yang menunjukkan punca masalah, membantu anda mengenal pasti dan membaiki ralat sintaks dengan cepat.

Bolehkah saya memuat turun output yang telah ditukar?

Ya, gunakan butang Muat Turun untuk menyimpan output yang telah ditukar sebagai fail .json (untuk output JSON) atau fail .php (untuk output PHP array).

Mengapa saya perlu menukar antara PHP dan JSON?

Kegunaan biasa termasuk menukar respons API untuk digunakan dalam aplikasi PHP, menjana data ujian PHP daripada JSON fixtures, mencipta fail konfigurasi, migrasi data antara sistem dan menyediakan contoh dokumentasi.

Adakah JSON cetak cantik menjejaskan data?

Tidak, cetak cantik hanya menambah ruang kosong (ruang dan baris baharu) untuk kebolehbacaan. Struktur dan nilai data sebenar kekal sama dengan JSON padat. Satu-satunya perbezaan ialah saiz fail dan kemudahan pembacaan manusia.

Sumber rujukan

  1. PHP manual — json_encode — Lists versus objects, escaping flags, float handling.
  2. PHP manual — json_decode — Objects as stdClass or associative arrays, big integers.
  3. PHP manual — var_export — The real output format of var_export.
  4. PHP manual — Strings — Variable interpolation and escape sequences in double-quoted strings.
  5. IETF — RFC 8259, The JSON Data Interchange Format

Panduan ini menerangkan peraturan yang diterbitkan dalam bahasa mudah. Ia bukan nasihat kewangan, undang-undang atau rasmi — peraturan boleh berubah, jadi sahkan dengan agensi yang dipautkan di atas sebelum membuat keputusan.

Advertisement