2017-10-14 56 views
0

的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对象?

+3

您将'shoppingDetails'声明为数组,但它是JSON中的一个数组数组。 –

+1

*“为什么GSON解析数组的数组** **的对象时,给我一个错误?” *你的标题说明了一切。 “**阵列**”。 'shoppingDetails'必须是'领域[] []',即一个Field'的'阵列的阵列。和'Field'应该然后是用'@SerializedName( “值”)'和'@SerializedName( “名称”)'注释两个'String'领域的类。 – Andreas

+1

啊!非常感谢你们两位。这确实是一个不成熟的错误。有没有办法接受评论作为答案? – redflour

回答

0
  • 添加公司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(); 
} 
相关问题