PHP JSON decode
Qui avevo parlato di come trasformare il risultato di una query in formato JSON.
Da qualche parte si presume ci sia un client che voglia vedere il risultato della query, e non in formato JSON.
I tipi di client possono essere i più vari, e scritti in diversi linguaggi.
Se vogliamo fare la decodifica in PHP possiamo farlo in maniera molto semplice.
Ripartiamo dalla parte server:
<?php $host = "localhost"; $user = "user"; $pass = "pwd"; $db = "library"; $conn = mysqli_connect($host, $user, $pass, $db) or die(mysqli_connect_error()); if (mysqli_connect_errno()) { echo "Connessione fallita: " . die(mysqli_connect_error()); } $result = mysqli_query($conn, "SELECT * FROM book"); $rows = array(); while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { $rows[] = array( 'title' => $row['title'], 'author' => $row['author'], 'editor' => $row['editor'] ); } echo json_encode($rows); mysqli_free_result($result); mysqli_close($conn);
Facciamo una query ed estrapoliamo tre campi:
- title
- author
- editor
Per fare il decode del risultato ci basta questo:
<?php
<?php
$jsonUrl = "http://www.sito.it/book.php";
$jsonContents = file_get_contents($jsonUrl, 0, NULL, NULL);
$jsonDecode = json_decode($jsonContents);
foreach ($jsonDecode as $title) {
echo $title->title . '<br/>';
}
Con file_get_contents prendiamo tutto il contenuto di un file e lo trasformiamo in una stringa.
Guardate che l'url deve avere sempre il path completo anche se i file stanno nella stessa directory (come in questo caso); con il path relativo non mi ha funzionato.
Sotto usiamo json_decode per fare decodificare la stringa.
Sotto ancora, con un ciclo foreach, scorriamo la stringa e tiriamo fuori i valori che ci servono.
In questo caso ho preso solo il title.
php json json_deocde file_get_contents
Commentami!