Buduję skrypt PHP, który przekazuje dane JSON do innego skryptu. Mój skrypt buduje dane w dużej tablicy asocjacyjnej, a następnie wysyła dane za pomocą json_encode
. Oto przykładowy skrypt:
$data = array('a' => 'apple', 'b' => 'banana', 'c' => 'catnip');
header('Content-type: text/javascript');
echo json_encode($data);
Powyższy kod daje następujące dane wyjściowe:
{"a":"apple","b":"banana","c":"catnip"}
Jest to świetne, jeśli masz niewielką ilość danych, ale wolałbym coś podobnego:
{
"a": "apple",
"b": "banana",
"c": "catnip"
}
Czy jest sposób na zrobienie tego w PHP bez brzydkiego włamania? Wygląda na to, że ktoś na Facebooku to rozgryzł.
php
json
pretty-print
Zach Rattner
źródło
źródło
up_json_encode($data, JSON_PRETTY_PRINT);
Content-Type: application/json
nagłówek Firefox pokaże wynik przy użyciu własnego wewnętrznego parsera JSON, a Chrome wyświetli zwykły tekst. +1 Firefox!Odpowiedzi:
PHP 5.4 oferuje
JSON_PRETTY_PRINT
opcję użycia zjson_encode()
wywołaniem.http://php.net/manual/en/function.json-encode.php
źródło
Content-Type
naapplication/json
jeśli chcesz przeglądarka wyświetli dość wydrukowanego JSON ładnie.<pre>
tagu typu<?php ... $json_string = json_encode($data, JSON_PRETTY_PRINT); echo "<pre>".$json_string."<pre>";
Ta funkcja pobiera ciąg JSON i wcina go bardzo czytelnie. Powinien także być zbieżny,
Wejście
Wynik
Kod
źródło
Wielu użytkowników sugerowało skorzystanie z tej opcji
Co jest absolutnie słuszne. Ale to nie wystarczy, przeglądarka musi zrozumieć rodzaj danych, możesz określić nagłówek tuż przed wysłaniem danych do użytkownika.
Spowoduje to dobrze sformatowane wyjście.
Lub, jeśli lubisz rozszerzenia, możesz użyć JSONView dla Chrome.
źródło
Miałem ten sam problem.
W każdym razie użyłem tutaj kodu formatującego json:
http://recursive-design.com/blog/2008/03/11/format-json-with-php/
Działa dobrze do tego, czego potrzebowałem.
I bardziej utrzymana wersja: https://github.com/GerHobbelt/nicejson-php
źródło
Zdaję sobie sprawę, że to pytanie dotyczy sposobu zakodowania tablicy asocjacyjnej w dość sformatowanym ciągu JSON, więc nie odpowiada to bezpośrednio na pytanie, ale jeśli masz ciąg, który jest już w formacie JSON, możesz to zrobić po prostu przez dekodowanie i ponowne kodowanie (wymaga PHP> = 5.4):
Przykład:
To daje:
źródło
Sklejenie kilku odpowiedzi razem odpowiada mojej potrzebie istnienia JSON:
źródło
function json_print($json) { return '<pre>' . json_encode(json_decode($json), JSON_PRETTY_PRINT) . '</pre>'; }
Wziąłem kod od Composer: https://github.com/composer/composer/blob/master/src/Composer/Json/JsonFile.php i nicejson: https://github.com/GerHobbelt/nicejson-php/blob /master/nicejson.php Kod kompozytora jest dobry, ponieważ aktualizuje się płynnie z 5.3 do 5.4, ale koduje tylko obiekt, podczas gdy nicejson pobiera ciągi json, więc połączyłem je. Kod może być używany do formatowania łańcucha Json i / lub kodowania obiektów, obecnie używam go w module Drupal.
źródło
Jeśli korzystasz z Firefoxa, zainstaluj JSONovich . Nie do końca to rozwiązanie PHP, które znam, ale robi to sztuczkę do celów programistycznych / debugowania.
źródło
Użyłem tego:
Lub użyj nagłówków php jak poniżej:
źródło
Prosty sposób na php> 5.4: jak na wykresie na Facebooku
Wynik w przeglądarce
źródło
Używać
<pre>
w połączeniu zjson_encode()
orazJSON_PRETTY_PRINT
opcji:źródło
Jeśli masz już JSON (
$ugly_json
)źródło
Pełna kolorystyka: małe rozwiązanie
Kod:
źródło
Możesz nieco zmodyfikować odpowiedź Kendall Hopkins w instrukcji switch, aby uzyskać ładnie wyglądający i ładnie wcięty wydruk, przekazując ciąg json w następujący sposób:
}
Teraz wystarczy uruchomić funkcję prettyPrint ($ your_json_string); wstaw w swoim php i ciesz się wydrukiem. Jeśli jesteś minimalistą i z jakiegoś powodu nie lubisz nawiasów, możesz łatwo się ich pozbyć, zastępując
$char.="<br>";
je$char="<br>";
w trzech najlepszych przypadkach przełączników na $ char. Oto, co otrzymujesz za wywołanie interfejsu API map Google dla miasta Calgaryźródło
Możesz to zrobić jak poniżej.
Powyżej wyświetliby się coś w rodzaju Facebooka.
źródło
a_val
jest tablicą lub obiektem?Klasyczna skrzynka na rozwiązanie rekurencyjne. To moje:
Stosowanie:
Twoje zdrowie
źródło
To rozwiązanie sprawia, że „naprawdę ładny” JSON. Nie do końca to, o co prosił PO, ale pozwala lepiej zwizualizować JSON.
}
źródło
Jeśli użyłeś tylko
$json_string = json_encode($data, JSON_PRETTY_PRINT);
, dostaniesz w przeglądarce coś takiego (używając linku do Facebooka z pytania :)):ale jeśli użyłeś chromowanego rozszerzenia, takiego jak JSONView (nawet bez powyższej opcji PHP), otrzymasz bardziej czytelne, debugowalne rozwiązanie, w którym możesz nawet złożyć / zwinąć każdy pojedynczy obiekt JSON w następujący sposób:
źródło
print_r ładny print dla PHP
Przykład PHP
źródło
1 -
json_encode($rows,JSON_PRETTY_PRINT);
zwraca wstępnie zapisane dane ze znakami nowej linii. Jest to pomocne przy wprowadzaniu z wiersza poleceń, ale jak odkryłeś, nie wygląda tak ładnie w przeglądarce. Przeglądarka zaakceptuje nowe wiersze jako źródło (a zatem przeglądanie źródła strony rzeczywiście pokaże ładny JSON), ale nie są one używane do formatowania danych wyjściowych w przeglądarkach. Przeglądarki wymagają HTML.2 - użyć tego fuction GitHub
źródło
Dla mnie to zadziałało:
Zawartość test.php:
wynik:
Zwróć także uwagę na użycie znacznika „pre” w html.
Mam nadzieję, że komuś pomoże
źródło
najlepszy sposób na sformatowanie danych JSON jest taki!
Zamień $ odpowiedz na Dane, które należy przekonwertować na JSON
źródło
Jeśli korzystasz z PHP w wersji 5.3 lub wcześniejszej, możesz spróbować poniżej:
źródło
Jeśli pracujesz z MVC
spróbuj to zrobić w kontrolerze
wtedy jeśli zadzwonisz / getLatestUsers, otrzymasz niezły wynik JSON;)
źródło