Saya sedang membangun skrip PHP yang mengumpankan data JSON ke skrip lain. Script saya membuat data menjadi array asosiatif besar, dan kemudian mengeluarkan data menggunakan json_encode
. Berikut ini contoh skrip:
$data = array('a' => 'apple', 'b' => 'banana', 'c' => 'catnip');
header('Content-type: text/javascript');
echo json_encode($data);
Kode di atas menghasilkan output berikut:
{"a":"apple","b":"banana","c":"catnip"}
Ini bagus jika Anda memiliki sedikit data, tetapi saya lebih suka sesuatu di sepanjang baris ini:
{
"a": "apple",
"b": "banana",
"c": "catnip"
}
Apakah ada cara untuk melakukan ini dalam PHP tanpa hack jelek? Sepertinya seseorang di Facebook menemukan jawabannya.
php
json
pretty-print
Zach Rattner
sumber
sumber
up_json_encode($data, JSON_PRETTY_PRINT);
Content-Type: application/json
tajuk, Firefox akan menunjukkan hasilnya menggunakan pengurai JSON internal sendiri, sementara Chrome menampilkan teks biasa. +1 Firefox!Jawaban:
PHP 5.4 menawarkan
JSON_PRETTY_PRINT
opsi untuk digunakan denganjson_encode()
panggilan.http://php.net/manual/en/function.json-encode.php
sumber
Content-Type
untukapplication/json
jika Anda ingin browser untuk menampilkan cukup dicetak JSON baik.<pre>
tag seperti<?php ... $json_string = json_encode($data, JSON_PRETTY_PRINT); echo "<pre>".$json_string."<pre>";
Fungsi ini akan mengambil string JSON dan membuat indentasinya sangat mudah dibaca. Itu juga harus konvergen,
Memasukkan
Keluaran
Kode
sumber
Banyak pengguna menyarankan agar Anda menggunakan
Itu benar sekali. Tapi itu tidak cukup, browser perlu memahami jenis data, Anda dapat menentukan header sebelum menggemakan data kembali ke pengguna.
Ini akan menghasilkan output yang diformat dengan baik.
Atau, jika Anda suka ekstensi, Anda bisa menggunakan JSONView untuk Chrome.
sumber
Saya memiliki masalah yang sama.
Lagi pula saya hanya menggunakan kode format json di sini:
http://recursive-design.com/blog/2008/03/11/format-json-with-php/
Bekerja dengan baik untuk apa yang saya butuhkan.
Dan versi yang lebih terpelihara: https://github.com/GerHobbelt/nicejson-php
sumber
Saya menyadari pertanyaan ini menanyakan tentang bagaimana menyandikan array asosiatif ke string JSON yang diformat cantik, jadi ini tidak langsung menjawab pertanyaan, tetapi jika Anda memiliki string yang sudah dalam format JSON, Anda dapat membuatnya cukup sederhana dengan mendekode dan meng-encode ulang (membutuhkan PHP> = 5.4):
Contoh:
Output ini:
sumber
Merekatkan beberapa jawaban sesuai dengan kebutuhan saya untuk json yang ada:
sumber
function json_print($json) { return '<pre>' . json_encode(json_decode($json), JSON_PRETTY_PRINT) . '</pre>'; }
Saya mengambil kode dari Komposer: https://github.com/composer/composer/blob/master/src/Composer/Json/JsonFile.php dan nicejson: https://github.com/GerHobbelt/nicejson-php/blob /master/nicejson.php Kode komposer baik karena pembaruan lancar dari 5,3 ke 5,4 tetapi hanya mengkodekan objek sedangkan nicejson mengambil string json, jadi saya menggabungkannya. Kode dapat digunakan untuk memformat string json dan / atau menyandikan objek, saya saat ini menggunakannya dalam modul Drupal.
sumber
Jika Anda menggunakan firefox, instal JSONovich . Tidak benar-benar solusi PHP yang saya tahu, tetapi ia melakukan trik untuk tujuan pengembangan / debugging.
sumber
Saya telah menggunakan ini:
Atau gunakan tajuk php seperti di bawah ini:
sumber
Cara sederhana untuk php> 5.4: seperti di grafik Facebook
Hasil dalam browser
sumber
Gunakan
<pre>
dalam kombinasi denganjson_encode()
danJSON_PRETTY_PRINT
opsi:sumber
Jika Anda memiliki JSON (
$ugly_json
)sumber
Memiliki keluaran penuh warna: Tiny Solution
Kode:
sumber
Anda dapat mengubah sedikit jawaban Kendall Hopkins dalam pernyataan switch untuk mendapatkan hasil cetakan yang cukup bersih dan lekukan dengan mengirimkan string json ke dalam yang berikut:
}
Sekarang jalankan saja fungsi prettyPrint ($ your_json_string); sebaris di php Anda dan nikmati cetakannya. Jika Anda seorang minimalis dan tidak suka tanda kurung karena beberapa alasan, Anda dapat menyingkirkannya dengan mudah dengan mengganti
$char.="<br>";
dengan$char="<br>";
dalam tiga kotak saklar teratas dengan $ char. Inilah yang Anda dapatkan dari panggilan Google maps API untuk kota Calgarysumber
Anda bisa melakukannya seperti di bawah ini.
Di atas akan menampilkan semacam Facebook.
sumber
a_val
array atau objek?Kasing klasik untuk solusi rekursif. Ini milik saya:
Pemakaian:
Bersulang
sumber
Solusi ini membuat JSON 'sangat cantik'. Tidak persis apa yang diminta OP, tetapi memungkinkan Anda memvisualisasikan JSON dengan lebih baik.
}
sumber
Jika Anda hanya menggunakan
$json_string = json_encode($data, JSON_PRETTY_PRINT);
, Anda akan masuk ke browser seperti ini (menggunakan tautan Facebook dari pertanyaan :)):tetapi jika Anda menggunakan Ekstensi chrome seperti JSONView (bahkan tanpa opsi PHP di atas), maka Anda mendapatkan solusi debuggable yang lebih mudah dibaca di mana Anda bahkan dapat Lipat / Perkecil setiap objek JSON dengan mudah seperti ini:
sumber
print_r print cantik untuk PHP
Contoh PHP
sumber
1 -
json_encode($rows,JSON_PRETTY_PRINT);
mengembalikan data yang telah dicetak sebelumnya dengan karakter baris baru. Ini membantu untuk input baris perintah, tetapi karena Anda telah menemukan tidak terlihat cantik di dalam browser. Browser akan menerima baris baru sebagai sumber (dan karenanya, melihat sumber halaman memang akan menampilkan JSON yang cantik), tetapi mereka tidak digunakan untuk memformat output di browser. Browser membutuhkan HTML.2 - gunakan github fungsi ini
sumber
Berikut ini yang berhasil bagi saya:
Isi test.php:
keluaran:
Perhatikan juga penggunaan tag "pre" di html.
Semoga itu bisa membantu seseorang
sumber
Cara terbaik untuk memformat data JSON adalah seperti ini!
Ganti $ response dengan Data Anda yang harus dikonversi ke JSON
sumber
Bagi yang menjalankan PHP versi 5.3 atau sebelumnya, Anda dapat mencoba di bawah ini:
sumber
Jika Anda bekerja dengan MVC
coba lakukan ini di controller Anda
maka jika Anda memanggil / getLatestUsers Anda akan mendapatkan hasil JSON yang cantik;)
sumber