Subclass JSONContent

The custom unserializeContent is retained because even though invalid
content can't be saved, fillParserOutput is still run, causing PHP
errors.

Change-Id: I766e7c3c443c84367d301204deed3fda61d7e73f