Decoding JSON

Posted under » PHP on 24 Oct 2018

Now that we have encoded to JSON. It's time to decode it back for viewing.

The encoded file will look something like this.

[{"author_name":"Machida S, Chen HY","title":"Molecular Arabidopsis thaliana SERRATE"},{"author_name":"Yang X, Tan SH","title":"RNA silencing suppression by NS3 protein of Tenuivirus"}]
$url = 'http://heh.com/pubjson.php'; 
$data = file_get_contents($url); // put the contents of the file into a variable
$king = json_decode($data, true); // true must be on 
// echo $king[0]->author_name; if you want to see the first row
foreach ($king as $character) {
	echo "<p>".$character['author_name']. "\n";
}

This is the easiest way to loop the array. If you pass "true" as the argument in json_decode(), the data becomes an associative array instead of an object. This means we’ll be using square bracket notation[] instead of the skinny arrow->.

However, if you need to have more control on how many rows to display, you might want to use this looping method.

$count= count($king);

for ($i=0; $i < $count; $i++)
{ 
echo $king[$i]["author_name"] . "<br>";
}

You can also do association JSON like

{
	"FIFA_World_Cup_finals":
	[
		{
			"Year": "2018",
			"data":
			{
				"Winner": "France",
				"Score": "4-2",
				"Runner-up": "Croatia"
			}
		},
	    {
			"Year": "2014",
			"data":
			{
				"Winner": "Germany",
				"Score": "1-0",
				"Runner-up": "Argentina"
			}
		},
	    {
			"Year": "2010",
			"data":
			{
				"Winner": "Spain",
				"Score": "1-0",
				"Runner-up": "Netherlands"
			}
		}
	]
}

You can iterate them using $jsonIterator

<¿php
$JSON = file_get_contents("input.json");
$jsonIterator = new RecursiveIteratorIterator(
    new RecursiveArrayIterator(json_decode($JSON, TRUE)),
    RecursiveIteratorIterator::SELF_FIRST);

foreach ($jsonIterator as $key => $val) {
    if(!is_array($val)) {
        if($key == "Year") {
            print "
"; } print $key." : ".$val . "
"; } } ?>

web security linux ubuntu GIT svn Raspberry apache mysql php drupal cake symfony javascript Ajax css