private static void writeValue(XContentGenerator gen, Object value) throws IOException { Class type = value.getClass(); if (type == String.class) { gen.writeString((String) value); } else if (type == Integer.class) { gen.writeNumber(((Integer) value).intValue()); } else if (type == Long.class) { gen.writeNumber(((Long) value).longValue()); } else if (type == Float.class) { gen.writeNumber(((Float) value).floatValue()); } else if (type == Double.class) { gen.writeNumber(((Double) value).doubleValue()); } else if (type == Short.class) { gen.writeNumber(((Short) value).shortValue()); } else if (type == Boolean.class) { gen.writeBoolean(((Boolean) value).booleanValue()); } else if (value instanceof Map) { writeMap(gen, (Map) value); } else if (value instanceof Iterable) { writeIterable(gen, (Iterable) value); } else if (value instanceof Object[]) { writeObjectArray(gen, (Object[]) value); } else if (type == byte[].class) { gen.writeBinary((byte[]) value); } else if (value instanceof Date) { gen.writeString(XContentBuilder.defaultDatePrinter.print(((Date) value).getTime())); } else { gen.writeString(value.toString()); } }