protobuf.name(entry.getKey());
write(entry.getValue());
}
protobuf.endObject();
} else if (o instanceof JsonPrimitive) {
JsonPrimitive json = (JsonPrimitive) o;
if (json.isBoolean()) {
protobuf.value(json.getAsBoolean());
} else if (json.isString()) {
protobuf.value(json.getAsString());
} else if (json.isNumber()) {
Number number = json.getAsNumber();
if (number instanceof Double || number instanceof Float) {
protobuf.value(number.doubleValue());
} else {
protobuf.value(number.longValue());
}
} else {
throw new UnsupportedOperationException("Unhandled json value: " + json.toString());
}
} else if (o instanceof JsonArray) {
JsonArray json = (JsonArray) o;
protobuf.beginArray();
for (int i = 0; i < json.size(); i++) {
JsonElement jsonElement = json.get(i);
write(jsonElement);
}
protobuf.endArray();
} else {
throw new UnsupportedOperationException("Unhandled json type: " + o.toString());