package openeye.logic; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; import java.lang.reflect.Type; import net.minecraftforge.fml.common.versioning.ArtifactVersion; import openeye.struct.TypedCollections; import openeye.struct.TypedCollections.ReportsList; import openeye.struct.TypedCollections.ResponseList; public class GsonUtils { public static final JsonSerializer<ArtifactVersion> VERSION_SERIALIZER = new JsonSerializer<ArtifactVersion>() { @Override public JsonElement serialize(ArtifactVersion src, Type typeOfSrc, JsonSerializationContext context) { JsonObject obj = new JsonObject(); obj.addProperty("label", src.getLabel()); obj.addProperty("version", src.getRangeString()); return obj; } }; public static GsonBuilder setupCommonBuilder() { return new GsonBuilder() .registerTypeAdapter(ReportsList.class, TypedCollections.REPORT_LIST_CONVERTER) .registerTypeAdapter(ResponseList.class, TypedCollections.RESPONSE_LIST_CONVERTER) .registerTypeAdapter(ArtifactVersion.class, VERSION_SERIALIZER); } public static final Gson NET_GSON = setupCommonBuilder().create(); public static final Gson PRETTY_GSON = setupCommonBuilder().setPrettyPrinting().create(); }