ich eine Klasse serialisiert bin versucht, die definiert zwei Date
Felder hat:Gson: Serialisierung eine Klasse mit zwei Datumsfelder
import com.google.gson.annotations.Expose;
import java.util.Date;
public class DateRange {
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
@Expose
public Date startDate;
@Expose
public Date endDate;
public DateRange(Date startDate, Date endDate) {
this.startDate = startDate;
this.endDate = endDate;
}
public DateRange(String startDate, String endDate) throws ParseException{
this.startDate = dateFormat.parse(startDate);
this.endDate = dateFormat.parse(endDate);
}
}
aber mit gson.toJson
wird eine Ausnahme geworfen, wo mehrere
import com.google.gson.Gson
Gson gson = new Gson()
gson.toJson(new DateRange("2011-11-11", "2012-11-11"))
Ergebnisse in
java.lang.IllegalArgumentException: class java.text.DecimalFormat declares multiple JSON fields named maximumIntegerDigits
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166)
Das Problem ist verschärft, wo ich eine habe Klasse ManyDates
, die ein Feld mit DateRange
sowie ein weiteres Feld mit einem Array von DateRange
hat. Ich habe versucht, das Feld, indem als private transient
aber kein Glück (auch mit dem Feld als String
Typ versucht)
private transient java.text.DecimalFormat maximumIntegerDigits;
aber das Feld nach wie vor verursacht Probleme mit der Serialisierung. Ich bin mir nicht sicher, woher dieses Feld überhaupt kommt, aber ich vermute, dass eine einfache Lösung einfach unerreichbar ist, die ich gerade nicht sehe.
Das Feld am meisten gehört wahrscheinlich zu 'java.util.Date'. Meine Empfehlung wäre, die Daten als "String" zu serialisieren und zu einem "Date" zu deserialisieren. –
Ich denke, das ist passiert, weil Sie DataRange-Methode und das Argument, das Sie inJson für die zwei Methoden-Signatur gelten, was ist der Punkt der Erstellung von zwei Methoden? –
Ich denke, das ist, weil es versucht, DateFormat zu json zu serialisieren. Markiere es mit Annotation @Transient. –