parent = ((JsonElement)parent).getParent();
break;
}
if (ch != quote) {
JsonError jsonError = new JsonError(parent, "JSON key should begin with \"");
parent.addChild(jsonError);
throw new JsonTextOutlineParserException();
}
int start = parser.getPosition();
String attributeKey = doJsonKey();
ch = parser.getNextClean();
if (ch != colon) {
JsonError jsonError = new JsonError(parent, "Expected colon key/value delimitor");
parent.addChild(jsonError);
throw new JsonTextOutlineParserException();
}
ch = parser.getNextClean();
if (ch == openCurly) {
doJsonObject(attributeKey, start);
} else if (ch == openSquare) {
doJsonArray(attributeKey, start);
} else if (ch == n) {
doJsonNull(attributeKey, start);
} else if (ch == quote) {
doJsonValue(attributeKey, start);
} else if (ch == t) {
doJsonTrueValue(attributeKey, start);
} else if (ch == f) {
doJsonFalseValue(attributeKey, start);
} else if (Character.isDigit(ch) || ch == minus) {
doJsonNumber(attributeKey, start);
} else {
JsonError jsonError = new JsonError(parent, "Expected org.sourceforge.jsonedit.core.core value");
parent.addChild(jsonError);
throw new JsonTextOutlineParserException();
}
ch = parser.getCurrent();
if (ch == comma) {
continue;
}
if (ch == closeCurly) {
parser.getNextClean();
parent = ((JsonElement)parent).getParent();
break;
}
JsonError jsonError = new JsonError(parent, "Unexpected object character:" + ch);
parent.addChild(jsonError);
throw new JsonTextOutlineParserException();
} while (ch != eof);
}