public function testDecodeCircularObjectsFromJson() { $json = '{"root":"@000000005750c50c000000000ea0522a","objects":{"@000000005750c513000000000ea0522a":{"firstname":"Manfred","parent":"@000000005750c50c000000000ea0522a","children":null},"@000000005750c50c000000000ea0522a":{"firstname":"Max","parent":null,"children":["@000000005750c513000000000ea0522a"]}}}'; $personA = JSONReference::decode(json_decode($json)); $this->assertEquals('Max', $personA->firstname); $this->assertEquals('Manfred', $personA->children[0]->firstname); $this->assertEquals('Max', $personA->children[0]->parent->firstname); $personA->firstname = 'Not Max'; $this->assertEquals('Not Max', $personA->firstname); $this->assertEquals('Manfred', $personA->children[0]->firstname); $this->assertEquals('Not Max', $personA->children[0]->parent->firstname); }
?> </pre> <h1>JavaScript</h1> <pre> dad.firstname = <span id="firstname1"></span> dad.children[0].parent.firstname = <span id="firstname2"></span> dad.firstname = 'Not Max'; dad.firstname = <span id="firstname3"></span> dad.children[0].parent.firstname = <span id="firstname4"></span> </pre> <script src="../JSONReference.js"></script> <script> var data = <?php echo json_encode(JSONReference::encode($dad)); ?> ; dad = JSONReference.decode(data); document.getElementById('firstname1').innerHTML = dad.firstname; document.getElementById('firstname2').innerHTML = dad.children[0].parent.firstname; dad.firstname = 'Not Max'; document.getElementById('firstname3').innerHTML = dad.firstname; document.getElementById('firstname4').innerHTML = dad.children[0].parent.firstname; </script> </body> </html>