Allora, prima di tutto quello non e' JSON valido: nell'oggetto "gatto" ci sono numeri non quotati.
Poi fai un giro assurdo per leggere un file, invece di quel gioco con l'output buffering usa file_get_contents().
Infine non puoi stampare $modules->{'cane'} direttamente perche' e' un oggetto e non una stringa.