I am trying to send a JSON file to do some testing. I have a simple test file that creates a Multi-dimensional array. Here is the test file:
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
$user['Mongo'] = null;
$user['Facebook'] = 12345;
$user['Twitter'] = null;
$user['Foursquare'] = null;
$user['Google'] = null;
$user['Name'] = "Bill Gates";
$user['Sex'] = 'M';
$user['Age'] = 26;
$user['Birthday'] = "1985-08-13";
$user['Friends'][0]['Mongo'] = null;
$user['Friends'][0]['Facebook'] = 123456;
$user['Friends'][0]['Twitter'] = null;
$user['Friends'][0]['Foursquare'] = null;
$user['Friends'][0]['Google'] = null;
$user['Friends'][0]['Name'] = "John Smith";
$user['Friends'][0]['Relationship'] = "Open";
$user['Friends'][1]['Mongo'] = null;
$user['Friends'][1]['Facebook'] = 1234567;
$user['Friends'][1]['Twitter'] = null;
$user['Friends'][1]['Foursquare'] = null;
$user['Friends'][1]['Google'] = null;
$user['Friends'][1]['Name'] = "Martina McBride";
$user['Friends'][1]['Relationship'] = "Open";
$user_json = json_encode($user);
$call = curl_init('http://MY_IP_HERE/user_login.php');
curl_setopt($call, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($call, CURLOPT_POSTFIELDS, $user_json);
curl_setopt($call, CURLOPT_RETURNTRANSFER, true);
curl_setopt($call, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: '.strlen($user_json)));
$result = curl_exec($call);
curl_close($call);
echo $result;
?>
I am trying to retrieve the file like so:
<?php
include_once('interaction_class.php');
error_reporting(E_ALL);
ini_set('display_errors', '1');
$fp = fopen('php://input', 'r');
$rawData = stream_get_contents($fp);
$user = json_decode($rawData);
if ($user['Mongo'] == null)
{
$user_id = $interaction->new_guest($user);
}
//...Other stuff...
I am getting an error about Object of class stdCLass on my if statement line. So, I did a var_dump() and this is the result:
object(stdClass)#1 (10)
{
["Mongo"] => NULL
["Facebook"] => int(12345)
["Twitter"] => NULL
["Foursquare"] => NULL
["Google"] => NULL
["Name"] => string(15) "Bill Gates"
["Sex"] => string(1) "M"
["Age"] => int(26)
["Birthday"] => string(10) "1985-08-13"
["Friends"] => array(2)
{
[0] => object(stdClass)#2 (7)
{
["Mongo"] => NULL
["Facebook"] => int(123456)
["Twitter"] => NULL
["Foursquare"] => NULL
["Google"] => NULL
["Name"] => string(10) "John Smith"
["Relationship"] => string(4) "Open"
}
[1] => object(stdClass)#3 (7)
{
["Mongo"] => NULL
["Facebook"] => int(1234567)
["Twitter"] => NULL
["Foursquare"] => NULL
["Google"] => NULL
["Name"] => string(15) "Martina McBride"
["Relationship"] => string(4) "Open"
}
}
}
My questions is, why can’t I access the info after I do a json_decode() like so:
$thing['Key']
Why is it turning it decoding into an Object instead of an array?
Thanks in advance for any help!
PHP function json_decode() returns objects by default: http://www.php.net/manual/en/function.json-decode.php
If you want to work with arrays, add the boolean “true” as the optional second parameter in the function like so:
This will return arrays into variable
$userIf you want to continue loading objects, instead of using
$user['Mongo']you can use$user->MongoHope this helps and good luck!