I am developing a web application in PHP,
I need to transfer many objects from server as JSON string, is there any library existing for PHP to convert object to JSON and JSON String to Objec, like Gson library for Java.
I am developing a web application in PHP,
I need to transfer many objects from server as JSON string, is there any library existing for PHP to convert object to JSON and JSON String to Objec, like Gson library for Java.
This one worked for me
function array_to_obj($array, &$obj)
{
foreach ($array as $key => $value)
{
if (is_array($value))
{
$obj->$key = new stdClass();
array_to_obj($value, $obj->$key);
}
else
{
$obj->$key = $value;
}
}
return $obj;
}
function arrayToObject($array)
{
$object= new stdClass();
return array_to_obj($array,$object);
}
usage :
$myobject = arrayToObject($array);
print_r($myobject);
returns :
[127] => stdClass Object
(
[status] => Have you ever created a really great looking website design
)
[128] => stdClass Object
(
[status] => Figure A.
Facebook's horizontal scrollbars showing up on a 1024x768 screen resolution.
)
[129] => stdClass Object
(
[status] => The other day at work, I had some spare time
)
like usual you can loop it like:
foreach($myobject as $obj)
{
echo $obj->status;
}
A quick way to do this is:
$obj = json_decode(json_encode($array));
Explanation
json_encode($array)
will convert the entire multi-dimensional array to a JSON string. (php.net/json_encode)
json_decode($string)
will convert the JSON string to a stdClass
object. If you pass in TRUE
as a second argument to json_decode
, you'll get an associative array back. (php.net/json_decode)
I don't think the performance here vs recursively going through the array and converting everything is very noticeable, although I'd like to see some benchmarks of this. It works, and it's not going to go away.
The solution is to take
contentType: "application/json",
from ajax call.
=)
Try this way to creating the associative array in php,
<?php
$object=array();
$i=0;
while($i<10){
$employee = array("name"=>"hassan", "Designation"=>"Software Engineer");
$i++;
$object[]=$employee;
}
$orginal["data"]=$object;
echo json_encode($orginal)
?>
OUTPUT WILL BE
{"data":[{"name":"hassan","Designation":"Software Engineer"},{"name":"hassan","Designation":"Software Engineer"},{"name":"hassan","Designation":"Software Engineer"},{"name":"hassan","Designation":"Software Engineer"},{"name":"hassan","Designation":"Software Engineer"},{"name":"hassan","Designation":"Software Engineer"},{"name":"hassan","Designation":"Software Engineer"},{"name":"hassan","Designation":"Software Engineer"},{"name":"hassan","Designation":"Software Engineer"},{"name":"hassan","Designation":"Software Engineer"}]}
This should do the trick!
Here's an example
If you want the output as an Array instead of an Object, pass
true
tojson_decode
More about json_encode()
See also: json_decode()