Erwartet BEGIN_OBJECT aber war BEGIN_ARRAY in Zeile 1 Spalte 2 (kleiner edit)
was ich habe hier ist ein web-service, dass gibt mir die folgende JSON-code :
[
{
"_OrderDetails": [
{
"ProductName": "FUCHS SUPER GT SAE 10W30 6X5 /FP10100010102",
"TotalAfterDiscount_Lc": "7500",
"MeasureUnitName": "كرتونة",
"TotalPrice_Lc": "7500",
"PricePerUnit_Lc": "75",
"Quantity": "100"
}
],
"Id": "274",
"OrderDate": "4/10/2014 12:00:00 AM",
"Number": "16",
"CustomerName": "الأسد",
"Note": ""
}
]
und ich habe eine java-Klasse (entity) mit Getter und setter für alle Daten :
package com.example.webservicetest;
import java.util.List;
public class Item {
private String OrderDate;
private String Number;
private String Note;
private String CustomerName;
private String Id;
private List<_OrderDetails> orderDetails;
public String getOrderDate() {
return OrderDate;
}
public void setOrderDate(String orderDate) {
OrderDate = orderDate;
}
public String getNumber() {
return Number;
}
public void setNumber(String number) {
Number = number;
}
public String getNote() {
return Note;
}
public void setNote(String note) {
Note = note;
}
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
public String getCustomerName() {
return CustomerName;
}
public void setCustomerName(String customerName) {
CustomerName = customerName;
}
public List<_OrderDetails> getOrderDetails() {
return orderDetails;
}
public void setOrderDetails(List<_OrderDetails> orderDetails) {
this.orderDetails = orderDetails;
}
public class _OrderDetails{
private String OrderId;
private String OrderDate;
private String Number;
private String Note;
private String ProductName;
private String TotalAfterDiscount_Lc;
private String MeasureUnitName;
private String TotalPrice_Lc;
private String PricePerUnit_Lc;
private String Quantity;
public String getOrderId() {
return OrderId;
}
public void setOrderId(String orderId) {
OrderId = orderId;
}
public String getOrderDate() {
return OrderDate;
}
public void setOrderDate(String orderDate) {
OrderDate = orderDate;
}
public String getNumber() {
return Number;
}
public void setNumber(String number) {
Number = number;
}
public String getNote() {
return Note;
}
public void setNote(String note) {
Note = note;
}
public String getProductName() {
return ProductName;
}
public void setProductName(String productName) {
ProductName = productName;
}
public String getTotalAfterDiscount_Lc() {
return TotalAfterDiscount_Lc;
}
public void setTotalAfterDiscount_Lc(String totalAfterDiscount_Lc) {
TotalAfterDiscount_Lc = totalAfterDiscount_Lc;
}
public String getMeasureUnitName() {
return MeasureUnitName;
}
public void setMeasureUnitName(String measureUnitName) {
MeasureUnitName = measureUnitName;
}
public String getTotalPrice_Lc() {
return TotalPrice_Lc;
}
public void setTotalPrice_Lc(String totalPrice_Lc) {
TotalPrice_Lc = totalPrice_Lc;
}
public String getPricePerUnit_Lc() {
return PricePerUnit_Lc;
}
public void setPricePerUnit_Lc(String pricePerUnit_Lc) {
PricePerUnit_Lc = pricePerUnit_Lc;
}
public String getQuantity() {
return Quantity;
}
public void setQuantity(String quantity) {
Quantity = quantity;
}
}
}
und in der Haupttätigkeit bekomme ich die Daten wie diese:
Item[] placelist;
placelist = gson.fromJson(responseJSON, Item[].class);
Item item = gson.fromJson(responseJSON, Item.class);
aber ich bekomme in der logcat wird die folgende Ausnahme :
Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2
bitte was mache ich falsch???
so können Sie es Bearbeiten ? weil ich bin neu bei android und json
InformationsquelleAutor user3534834 | 2014-04-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Blick auf dein code, der richtige Weg, um Ihre
item
Objekte istweil Ihre JSON ist ein
item
Objekt-Liste[
(BEGIN_ARRAY)wirft eine Ausnahme, weil Gson rechnet mit einer single-item-Objekt
{
(BEGIN_OBJECT), ist aber ein array.Können Sie nicht Deserialisieren der gleichen JSON, in zweierlei Hinsicht, nämlich als array und Objekt, wenn Ihr JSON ein array ist, deserialisiert es als ein array, wenn Sie JSON ist ein Objekt Deserialisieren, es als ein Objekt, aber man kann nicht deserialisiert werden, in beide Richtungen.
Für mich arbeiten..
InformationsquelleAutor vzamanillo
Hier ist, wie definieren Sie Ihre Klasse:
BEARBEITEN. Mit dem code-snippet unten können Sie Deserialisieren der JSON in
Item
Objekt...bist du hier?
bitte .. Hilfe :'(
Im Wesentlichen, wenn Sie JSON-string ist alles etwas wie dieses: Item[] items = new Gson().fromJson(jsonStr, Item[].Klasse); zu erhalten, um details array aus 1 Element: Element[0].getOrderDetails(). Alles andere ist ziemlich trivial.
ich bekomme den Wert null aus .. warum??
InformationsquelleAutor Toochka
Ihre JSON-Ausgabe ist eine Liste.
Nach dieser müssen Sie array der Elemente
nun es gibt mir NULL-ZEIGER-AUSNAHME
Element.getOrderDetails(); // 🙂
Deine Item-Klasse definiert ist falsch.
InformationsquelleAutor Toochka
Eigentlich, denn Sie haben ein array von Objekten, die nicht ein Objekt. Und das ist der Grund, warum die zweite Zeile funktioniert und die Dritte Zeile nicht. Also, wenn Sie wollen Parsen von json als ein Element[] placelist; Sie brauchen nicht, etwas zu ändern. Wenn Sie wollen, um zu analysieren, es als ein Objekt, das Sie entfernen sollten Klammern wie diese:
}
Oder analysiert werden wie ein array und rufen das erste element.
UPDATE
Funktioniert OK, und du hast ein array von Elementen. Aber Sie haben ein problem mit den Namen OrderDetails. Im json-es ist ein "_OrderDetails" in deinem code ist es "orderDetails". Sie können die Anmerkung hinzufügen, die auf Ihrem Gebiet:
Vollständigen code zu testen:
}
Ich habe bearbeitet meine Antwort.
trotzdem bekomme ich nichts .. ich weiß nicht warum !!
schau mal, was ich bekommen [com.example.webservicetest.OrderDetails@40cf2238]
Yep, und das ist es, was Sie brauchen. Haben Sie kopiert toString () - Methoden? Es zeigt Ihnen, dass alles funktioniert.
InformationsquelleAutor Moses
BTW dieses JSON - parsing ist falsch. Die Daten Ihrer Bestellung Liste wird null sein, jede einzelne Zeit.
"_OrderDetails": [ ... ] im JSON-Format bedeutet, dass die Liste die Namen der Aufträge "_OrderDetails"
InformationsquelleAutor Toochka