创建初始化gsonBuilder:
private final Gson gson;
public DeployServlet() {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeHierarchyAdapter(DeviceUpgradeStatus.class, new UpgradeStatusSerializer());
gsonBuilder.setDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
this.gson = gsonBuilder.create();
}
创建适配的serializer:
public class UpgradeStatusSerializer implements JsonSerializer<DeviceUpgradeStatus> {
@Override
public JsonElement serialize(DeviceUpgradeStatus src, Type typeOfSrc, JsonSerializationContext context) {
JsonObject element = new JsonObject();
element.addProperty("deviceId", src.getDeviceId());
element.addProperty("deployname", src.getDeployName());
element.addProperty("pkgname", src.getPkgName());
element.addProperty("type", src.getPkgType());
element.addProperty("version", src.getVersion());
element.addProperty("os", src.getOs());
element.addProperty("arch", src.getArch());
element.addProperty("extversion", src.getExtVersion());
element.addProperty("status", src.getStatus());
element.addProperty("updstatus", src.getUpdstatus());
element.addProperty("errorcode", src.getErrorCode());
element.addProperty("ts", src.getTs());
return element;
}
}
使用:
String json = this.gson.toJson(lists.toArray(new DeviceUpgradeStatus[] {}));
resp.setContentType("application/json");
resp.getOutputStream().write(json.getBytes("UTF-8"));
resp.setStatus(HttpServletResponse.SC_OK);