这是不创建自定义 gson 序列化的最简单方法。只需覆盖 toString() 方法
public class PrintRequest {
private Value data;
private String userImageBase64;
private String organizationImageBase64;
private String fileBase64;
//getters and setters
}
public class Value {
String nazwaDostawcy;
@Override
public String toString() {
return "Value{" +
"nazwaDostawcy='" + nazwaDostawcy + '\'' +
", nazwa='" + nazwa + '\'' +
", kod='" + kod + '\'' +
", kodEan='" + kodEan + '\'' +
", kodWewnrtrzny='" + kodWewnrtrzny + '\'' +
", cennaNetto='" + cennaNetto + '\'' +
", kategoria='" + kategoria + '\'' +
", opis='" + opis + '\'' +
", logo1='" + logo1 + '\'' +
", logo2='" + logo2 + '\'' +
'}';
}
String nazwa;
String kod;
String kodEan;
String kodWewnrtrzny;
String cennaNetto;
String kategoria;
String opis;
String logo1;
String logo2;
//getters and setters
}
用法:
PrintRequest printRequest = gson.fromJson(json, PrintRequest.class);
System.out.println(printRequest.getData().toString());
更新:
使用自定义 JsonDeserializer 的解决方案
public class CustomJsonDeserializer implements JsonDeserializer<PrintRequest> {
@Override
public PrintRequest deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
PrintRequest printRequest = new PrintRequest();
JsonObject jsonObject = jsonElement.getAsJsonObject();
String dataStr="";
JsonObject jsonObjectData = jsonObject.getAsJsonObject("data");
for (Data data : Data.values()) {
dataStr+=(data.name() + ":" + jsonObjectData.get(data.name()).getAsString()+",\n");
}
printRequest.setData(dataStr);
return printRequest;
}
}
public enum Data {
nazwaDostawcy,
nazwa
}
public class PrintRequest {
private String data;
private String userImageBase64;
private String organizationImageBase64;
private String fileBase64;
//getters and setters
用法:
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
gsonBuilder.registerTypeAdapter(PrintRequest.class, new CustomJsonDeserializer());
Gson gson = gsonBuilder.create();
PrintRequest printRequest = gson.fromJson(json, PrintRequest.class);
System.out.println(printRequest.getData());