diff --git a/jsonpointer.py b/jsonpointer.py index 2285ffc..e27a9ba 100644 --- a/jsonpointer.py +++ b/jsonpointer.py @@ -209,10 +209,15 @@ def set(self, doc, value, inplace=True): (parent, part) = self.to_last(doc) - if isinstance(parent, Sequence) and part == '-': + if isinstance(parent, str): + raise JsonPointerException("Cannot set value in a string") + elif isinstance(parent, Sequence) and part == '-': parent.append(value) else: - parent[part] = value + try: + parent[part] = value + except (TypeError, IndexError) as e: + raise JsonPointerException("Invalid assignment target: %s" % (e,)) return doc