Home / Programmazione / PHP / PHP JSON decode
Mattepuffo

PHP JSON decode

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.