use StringView for parse_keys
Fix StringView::substr when passed a negative length