@NotNull @Override public JsonElement serialize(@Nullable ClarifaiInput value, @NotNull Gson gson) {
if (value == null) {
return JsonNull.INSTANCE;
}
final JSONObjectBuilder builder = new JSONObjectBuilder()
.add("id", value.id());
final JSONObjectBuilder data = new JSONObjectBuilder()
.add("concepts", toJson(gson, value.concepts(), new TypeToken<List<Concept>>() {}))
.add("metadata", value.metadata());
if (value.inputValue() instanceof ClarifaiVideo) {
data.add("video", toJson(gson, (ClarifaiVideo) value.inputValue(), ClarifaiVideo.class));
} else {
data.add("image", toJson(gson, (ClarifaiImage) value.inputValue(), ClarifaiImage.class));
}
if (value.geo() != null) {
data.add("geo", new JSONObjectBuilder()
.add("geo_point", new JSONObjectBuilder()
.add("latitude", value.geo().x())
.add("longitude", value.geo().y())));
}
if (value.createdAt() != null) {
builder.addIfNotNull("created_at", toJson(gson, value.createdAt(), Date.class));
}
builder.add("data", data);
return builder.build();
}
};