为什么解析对象数组的数组时GSON给我一个错误?
问题描述:
的JSON:为什么解析对象数组的数组时GSON给我一个错误?
[{"DataContainer": {
"ShoppingDetails": [
[
{
"Value": "3",
"Name": "Price"
},
{
"Value": "XAV-13-9LO",
"Name": "Item Code"
}
],
[
{
"Value": "9",
"Name": "Price"
},
{
"Value": "WEB-13-9XH",
"Name": "Item Code"
}
]
]
}
}]
我已经有一个类DataContainer:
public class DataContainer extends WebResp{
@SerializedName("ShoppingDetails")
private ShoppingDetails[] shoppingDetails;
public ShoppingDetails[] getShoppingDetails() {
return shoppingDetails;
}
public void setShoppingDetails(ShoppingDetails[] shoppingDetails) {
this.shoppingDetails= shoppingDetails;
}
}
和类ShoppingDetails:
public class ShoppingDetails{
private Field[] field;
public Field[] getField() {
return field;
}
public void setField(Field[] field) {
this.field= field;
}
}
但不幸的是,我结束了 com.google.gson .JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_OBJECT但BEGIN_ARRAY在线61列10路径$ [0] .DataContainer.ShoppingDet苦恼的[0]
有人能指出我在正确的方向,以映射这个JSON使用GSON Java对象?
答
添加公司Databeans
使用GSON解析它
1.DataBean
public class DataBean {
private DataContainerBean DataContainer;
public DataContainerBean getDataContainer() {
return DataContainer;
}
public void setDataContainer(DataContainerBean DataContainer) {
this.DataContainer = DataContainer;
}
public static class DataContainerBean {
/**
* Value : 3
* Name : Price
*/
private List<List<ShoppingDetailsBean>> ShoppingDetails;
public List<List<ShoppingDetailsBean>> getShoppingDetails() {
return ShoppingDetails;
}
public void setShoppingDetails(List<List<ShoppingDetailsBean>> ShoppingDetails) {
this.ShoppingDetails = ShoppingDetails;
}
public static class ShoppingDetailsBean {
private String Value;
private String Name;
public String getValue() {
return Value;
}
public void setValue(String Value) {
this.Value = Value;
}
public String getName() {
return Name;
}
public void setName(String Name) {
this.Name = Name;
}
}
}
}
2.使用Gson
TP解析
Gson gson = new Gson();
try {
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i++) {
DataBean dataBean = gson.fromJson(jsonArray.getJSONObject(i).toString(),DataBean.class);
}
} catch (JSONException e) {
e.printStackTrace();
}
您将'shoppingDetails'声明为数组,但它是JSON中的一个数组数组。 –
*“为什么GSON解析数组的数组** **的对象时,给我一个错误?” *你的标题说明了一切。 “**阵列**”。 'shoppingDetails'必须是'领域[] []',即一个Field'的'阵列的阵列。和'Field'应该然后是用'@SerializedName( “值”)'和'@SerializedName( “名称”)'注释两个'String'领域的类。 – Andreas
啊!非常感谢你们两位。这确实是一个不成熟的错误。有没有办法接受评论作为答案? – redflour