I am developing php application in which i am querying database and the generated result I am sending back to html client.
Currently I am getting array of objects which I am encoding in JSON using php function json_encode.
But after encoding I am getting null array in my result.
The following structure is before encoding to JSON
array(2) {
[0]=>
object(ProductComment)#6 (2) {
["_productId":"ProductComment":private]=>
string(1) "1"
["_commentArray":"ProductComment":private]=>
array(2) {
[0]=>
array(3) {
["comment"]=>
string(9) "comment 1"
["creationDate"]=>
string(19) "2000-02-02 00:00:00"
["userName"]=>
string(8) "Ashutosh"
}
[1]=>
array(3) {
["comment"]=>
string(13) "comment1 text"
["creationDate"]=>
string(19) "2012-07-31 10:20:27"
["userName"]=>
string(8) "Ashutosh"
}
}
}
[1]=>
object(ProductComment)#5 (2) {
["_productId":"ProductComment":private]=>
string(1) "2"
["_commentArray":"ProductComment":private]=>
array(2) {
[0]=>
array(3) {
["comment"]=>
string(22) "comment2 product2 text"
["creationDate"]=>
string(19) "2012-07-31 10:48:06"
["userName"]=>
string(8) "Ashutosh"
}
[1]=>
array(3) {
["comment"]=>
string(22) "comment2 product4 text"
["creationDate"]=>
string(19) "2012-07-31 10:48:14"
["userName"]=>
string(8) "Ashutosh"
}
}
}
}
And after encoding it showing null instead of JSON. Do i need to serialize it? Anything advice will be appreciable. Thanking you.
It looks like all of the properties of "ProductComment" are private, so when it comes to JSON-encoding, you'd get:
[{}, {}]
Which is basically an array, with two empty objects in it.
What you need to do is tell PHP which properties can and should be kept when serializing (or json encoding). For that, you want to add the __sleep()
magic method to your class: (http://uk.php.net/__sleep)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With