package org.netmelody.cieye.server.response;
import java.lang.reflect.Type;
import org.netmelody.cieye.core.domain.Percentage;
import org.netmelody.cieye.core.domain.TargetId;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
public final class JsonTranslator {
private final Gson gson;
public JsonTranslator() {
final GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Percentage.class, new JsonSerializer<Percentage>() {
@Override
public JsonElement serialize(Percentage src, Type typeOfSrc, JsonSerializationContext context) {
return context.serialize(src.value());
}
});
builder.registerTypeAdapter(TargetId.class, new JsonSerializer<TargetId>() {
@Override
public JsonElement serialize(TargetId src, Type typeOfSrc, JsonSerializationContext context) {
return context.serialize(src.id());
}
});
gson = builder.create();
}
public String toJson(Object src) {
return gson.toJson(src);
}
}