$json2 = json_decode($json,true);
will create an associative array
So you cant iterate it as object the way you are doing now.
You should get an array something as below
[results] => Array
(
[books] => Array
(
[2014-05-13] => Array
(
[0] => Array
(
[book] => Array
(
[book_date] => 2014-05-13
[book_publisher] => Some Publisher
[book_id] => 123
[book_author] => Some Author
)
)
)
)
)
)
So you need to use array index to loop through the data.