'Parse a json pointer.
Json Pointers are defined in
http://tools.ietf.org/html/draft-pbryan-zyp-json-pointer .
The pointers use \'/\' for separation between object attributes, such
that \'/A/B\' would evaluate to C in {"A": {"B": "C"}}. A \'/\' character
in an attribute name is encoded as "~1" and a \'~\' character is encoded
as "~0".'

def _decode_json_pointer(self, pointer):

    self._validate_json_pointer(pointer)
    ret = []
    for part in pointer.lstrip('/').split('/'):
        ret.append(part.replace('~1', '/').replace('~0', '~').strip())
    return ret
