Wie parse JSON-array response mit Jackson?
Baue ich eine RESTful-client für Android und ich habe eine Frage zu Jackson.
Ich bekomme die folgende JSON-Antwort:
{
"cars": [
{
"active": "true",
"carName": "××× ×'פ ס×××ק×",
"categoryId": {
"licenseType": "××××××",
"licenseTypeId": "1"
},
"id": "1401268",
"insuranceDate": "2011-07-05T00:00:00+03:00",
"lessonLength": "45",
"licenseDate": "2011-07-05T00:00:00+03:00",
"price": "100",
"productionYear": "2009-07-05T00:00:00+03:00"
},
{
"active": "true",
"carName": "××©× ×××",
"categoryId": {
"licenseType": "×ש××ת",
"licenseTypeId": "4"
},
"id": "1589151",
"insuranceDate": "2011-04-13T00:00:00+03:00",
"lessonLength": "30",
"licenseDate": "2011-04-13T00:00:00+03:00",
"price": "120",
"productionYear": "2004-04-12T00:00:00+03:00"
},............. etc
jeder ist ein Auto aus einer Klasse, die wie folgt aussieht:
public class Cars implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String carName;
private Date productionYear;
private Date insuranceDate;
private Date licenseDate;
private Boolean active;
private Long price;
private Integer lessonLength;
private Date dayStart;
// private Collection<Students> studentsCollection;
// private Collection<Lessons> lessonsCollection;
private LicenseTypes categoryId;
// private Collection<Kilometers> kilometersCollection;
public Cars() {
}
public Cars(Integer id) {
this.id = id;
}
public Cars(Integer id, String carName) {
this.id = id;
this.carName = carName;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
Ich habe versucht zu analysieren, wird es automatisch mit Jackson mit wenig/keinen Erfolg..
Ist es auch möglich, zu analysieren und konvertieren Sie es in ein Objekt automatisch?
Ich kann nicht finden, diese irgendwo online..
Wenn Sie irgendeine Art von Beispiel für diese spezifische Art von server-Antwort bitte zeigen Sie mir gibt, oder wenn jemand generell erklären, wie es mit Jackson oder mit einem anderen tool, ich würde es sehr zu schätzen.
BEARBEITEN:
Vielen Dank an alle. Ich schaffte es Jackson arbeiten durch entfernen der {"cars":
von Anfang an den Ergebnis-string, und der }
vom Ende der Ergebnis-string. Nachdem ich, dass, Jackson verstanden, es war ein array und hast alles von selbst. Also für alle anderen, die Probleme haben mit diese Art von Dingen: Ein JSON-array sollte mit [
und Ende mit ]
und jedes element innerhalb sollte beginnen mit {
und Ende mit }
. Keine Anmerkungen gebraucht, Jackson finden die Mitglieder von selbst.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jackson kann sicher damit umgehen. Sie müssen paar mehr Stücke jedoch.
Zuerst die request-Objekt zu binden:
- und Sie auch brauchen, um entweder setter, die Autos, machen die Felder public (Jackson berücksichtigt nur öffentliche Felder für die automatische Erkennung), oder fügen Sie die folgende Anmerkung zu den Klasse Autos:
(so, dass die privaten Felder werden als Eigenschaften).
Damit Sie tun:
Hier ist ein einfacher test, die ich irgendwann zu verstehen, wie Jackson serialisiert/deserialisiert JSON-arrays und Objekte:
Habe ich keine Kenntnisse von Jackson, den ich fürchte, aber eine Möglichkeit könnte sein, über einen Konstruktor in der
Cars
Klasse, die erwartet als parameter ein element aus einem JSON-array (wie auch immer der Typ, der in Jackson). Der Konstruktor würde dann ziehen sich die Werte aus jeder Schlüssel der JSON-Auto-Eintrag und füllen Sie die Schüler als angemessen.Ich habe etwas ähnliches mit Hilfe der Gson-Bibliothek (http://code.google.com/p/google-gson/). Ich fand es einfacher zu verwenden als Jackson.
Hier ist ein Beispiel für das Parsen einer Antwort für einen Kontakt, der aussieht wie es wäre gut übersetzen, um Ihr Auto Beispiel: