ported JSONProperty code