core: Remove redundancy in JSON parser

This commit is contained in:
Eric Anderson 2018-03-08 07:33:22 -08:00
parent 8b9d179798
commit 19cd32fb66
1 changed files with 4 additions and 44 deletions

View File

@ -78,28 +78,8 @@ final class JsonParser {
Map<String, Object> obj = new LinkedHashMap<String, Object>(); Map<String, Object> obj = new LinkedHashMap<String, Object>();
while (jr.hasNext()) { while (jr.hasNext()) {
String name = jr.nextName(); String name = jr.nextName();
switch (jr.peek()) { Object value = parseRecursive(jr);
case BEGIN_ARRAY: obj.put(name, value);
obj.put(name, parseJsonArray(jr));
break;
case BEGIN_OBJECT:
obj.put(name, parseJsonObject(jr));
break;
case STRING:
obj.put(name, jr.nextString());
break;
case NUMBER:
obj.put(name, jr.nextDouble());
break;
case BOOLEAN:
obj.put(name, jr.nextBoolean());
break;
case NULL:
obj.put(name, parseJsonNull(jr));
break;
default:
throw new IllegalStateException("Bad token: " + jr.getPath());
}
} }
checkState(jr.peek() == JsonToken.END_OBJECT, "Bad token: " + jr.getPath()); checkState(jr.peek() == JsonToken.END_OBJECT, "Bad token: " + jr.getPath());
jr.endObject(); jr.endObject();
@ -110,28 +90,8 @@ final class JsonParser {
jr.beginArray(); jr.beginArray();
List<Object> array = new ArrayList<Object>(); List<Object> array = new ArrayList<Object>();
while (jr.hasNext()) { while (jr.hasNext()) {
switch (jr.peek()) { Object value = parseRecursive(jr);
case BEGIN_ARRAY: array.add(value);
array.add(parseJsonArray(jr));
break;
case BEGIN_OBJECT:
array.add(parseJsonObject(jr));
break;
case STRING:
array.add(jr.nextString());
break;
case NUMBER:
array.add(jr.nextDouble());
break;
case BOOLEAN:
array.add(jr.nextBoolean());
break;
case NULL:
array.add(parseJsonNull(jr));
break;
default:
throw new IllegalStateException("Bad token: " + jr.getPath());
}
} }
checkState(jr.peek() == JsonToken.END_ARRAY, "Bad token: " + jr.getPath()); checkState(jr.peek() == JsonToken.END_ARRAY, "Bad token: " + jr.getPath());
jr.endArray(); jr.endArray();