Erstellen Sie das Modell für das benutzerdefinierte Feld:
public class CustomHour {
public int maj;
public int min;
public CustomHour(int maj, int min) {
this.maj = maj;
this.min = min;
}
}
die Deserializer für diese benutzerdefinierte Klasse Körperbau:
public class CustomHourDeserializer implements JsonDeserializer<CustomHour> {
public CustomHour deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) {
String[] data = json.getAsJsonPrimitive().getAsString().split(":");
int maj = Integer.parseInt(data[0]);
int min = Integer.parseInt(data[1]);
return new CustomHour(maj, min);
}
}
Erstellen Sie Ihre Data
Klasse, die das benutzerdefinierte Feld (mit dem Feldnamen) einbetten:
Register CustomHourDeserializer
als Typ ad Vor der Deserialisierung:
String input = "{ \"maj:min\": \"8:80\" }";
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(CustomHour.class, new CustomHourDeserializer());
Gson gson = gsonBuilder.create();
Data data = gson.fromJson(input, Data.class);
System.out.println("min : " + data.hour.min + " | max : " + data.hour.maj);
Können Sie die JSON-Struktur so ändern, dass es {"maj": 8, "min": 80} ist? Dies wird von GSON leichter nachvollziehbar sein. –
Ich habe keine Kontrolle darüber, wie ich den JSON erhalte. – octavio
Wie wäre es mit einem benutzerdefinierten Deserializer (http://stackoverflow.com/questions/8165412/gson-custom-deserializing-logic-based-on-field-name)? Es scheint eine Menge Arbeit für diesen einfachen Fall zu sein, sollte aber funktionieren. –