Well, the root cause is that "plain" JSON actually doesn't know Perl objects: What JSON calls "objects", are actually hash references in Perl. Your TO_JSON method converts the inner object into a hash, but look closely at your output:
And we get output that looks good: {"NAME":"A instance","MY_CLASS_B":{"NAME":"B instance"}}
Actually, the output only appears to look good because you used "MY_CLASS_B" as the key in your object $a and as the class name for the object it contains. But look at your TO_JSON method: Actually, the class name MY_CLASS_B is missing from the serialized string, and therefore the deserializer couldn't bless the hash reference even if it wanted to.
That's why the either "tagging" or post-processing the JSON output, as mentioned in the section Object Serialization of the JSON docs, is required.
In reply to Re: How to encode/decode a class inside a class in JSON
by haj
in thread How to encode/decode a class inside a class in JSON
by Nordikelt
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |