How can I parse a JSON file with PHP? [duplicate] How can I parse a JSON file with PHP? [duplicate] php php

How can I parse a JSON file with PHP? [duplicate]


To iterate over a multidimensional array, you can use RecursiveArrayIterator

$jsonIterator = new RecursiveIteratorIterator(    new RecursiveArrayIterator(json_decode($json, TRUE)),    RecursiveIteratorIterator::SELF_FIRST);foreach ($jsonIterator as $key => $val) {    if(is_array($val)) {        echo "$key:\n";    } else {        echo "$key => $val\n";    }}

Output:

John:status => WaitJennifer:status => ActiveJames:status => Activeage => 56count => 10progress => 0.0029857bad => 0

run on codepad


I can't believe so many people are posting answers without reading the JSON properly.

If you foreach iterate $json_a alone, you have an object of objects. Even if you pass in true as the second parameter, you have a two-dimensional array. If you're looping through the first dimension you can't just echo the second dimension like that. So this is wrong:

foreach ($json_a as $k => $v) {   echo $k, ' : ', $v;}

To echo the statuses of each person, try this:

<?php$string = file_get_contents("/home/michael/test.json");if ($string === false) {    // deal with error...}$json_a = json_decode($string, true);if ($json_a === null) {    // deal with error...}foreach ($json_a as $person_name => $person_a) {    echo $person_a['status'];}?>


The most elegant solution:

$shipments = json_decode(file_get_contents("shipments.js"), true);print_r($shipments);

Remember that the json-file has to be encoded in UTF-8 without BOM. If the file has BOM, then json_decode will return NULL.

Alternatively:

$shipments = json_encode(json_decode(file_get_contents("shipments.js"), true));echo $shipments;