def json_compat_obj_decode(data_type, obj, caller_permissions=None,<EOL>alias_validators=None, strict=True,<EOL>old_style=False, for_msgpack=False):
decoder = PythonPrimitiveToStoneDecoder(caller_permissions,<EOL>alias_validators, for_msgpack, old_style, strict)<EOL>if isinstance(data_type, bv.Primitive):<EOL><INDENT>return decoder.make_stone_friendly(<EOL>data_type, obj, True)<EOL><DEDENT>else:<EOL><INDENT>return decoder.json_compat_obj_decode_helper(<EOL>data_type, obj)<EOL><DEDENT>
Decodes a JSON-compatible object based on its data type into a
representative Python object.

Args:
    data_type (Validator): Validator for serialized_obj.
    obj: The JSON-compatible object to decode based on data_type.
    caller_permissions (list): The list of raw-string caller permissions
        with which to serialize.
    strict (bool): If strict, then unknown struct fields will raise an
        error, and unknown union variants will raise an error even if a
        catch all field is specified. See json_decode() for more.

Returns:
    See json_decode().