预期为BEGIN_OBJECT,但在第1行第2列为BEGIN_ARRAY(小修改) [英] Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 (little edit)

查看:90
本文介绍了预期为BEGIN_OBJECT,但在第1行第2列为BEGIN_ARRAY(小修改)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在这里拥有的是一个网络服务,为我提供了以下JSON代码:

what I am having here is a web service that gives me the following 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": ""
  }
]

我已经用所有数据的getter和setter制作了一个java类(实体):

and I have made a java class (entity) with getters and setters for all data :

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;
    }

}

}

在主要活动中,我得到的数据是这样的:

and in the main activity I get the data like this:

Item[] placelist;
placelist = gson.fromJson(responseJSON, Item[].class);
Item item = gson.fromJson(responseJSON, Item.class);

但是我在logcat中遇到以下异常: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2

but I get in the logcat the following exception : Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2

请问我在做什么错??

please what am I doing wrong???

推荐答案

查看代码,获取item对象的正确方法是

Looking at your code, the right way to get your item objects is

Item[] placelist = gson.fromJson(responseJSON, Item[].class);    

因为您的JSON是item对象列表[(BEGIN_ARRAY)

because your JSON is an item object list [ (BEGIN_ARRAY)

Item item = gson.fromJson(responseJSON, Item.class);    

引发异常,因为Gson期望单个项目对象{(BEGIN_OBJECT)但它是一个数组.

throws an exception because Gson is expecting an single item object { (BEGIN_OBJECT) but is an array.

您不能以两种方式将相同的JSON反序列化为数组和对象,如果JSON是数组,则将其反序列化为数组,如果JSON是对象,则将其反序列化为对象,但不能反序列化两种方式.

You can not deserialize the same JSON in two ways, as array and as an object, if your JSON is an array, deserialize it as an array, if you JSON is an object deserialize it as an object but you can not deserialize in both ways.

这篇关于预期为BEGIN_OBJECT,但在第1行第2列为BEGIN_ARRAY(小修改)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆