【问题标题】:Android value of type java.lang.String cannot be converted to JSONobject?java.lang.String类型的Android值不能转换为JSONobject?
【发布时间】:2017-04-24 17:53:08
【问题描述】:

我正在使用 Gson 解析 Json。我知道这个问题已经被问过很多次,但我没有得到满意的解决方案。当我解析我的回复时,我在列表视图中显示 2 个项目后收到此错误 org.json.JSONException: java.lang.String 类型的值不能转换为 JSONObject

这是我的代码,谁能帮我解决我做错的问题。

提前致谢

这是我的 json 回复:-response

这是我的 POGO 课程

ProductResult.java

 public class ProductResult {
@SerializedName("status")
private String status;
@SerializedName("count")
private String count;
@SerializedName("data")
private List<Product> product;


public String getCount() {
    return count;
}

public void setCount(String count) {
    this.count = count;
}

public String getStatus() {
    return status;
}
public void setStatus(String status) {
    this.status = status;
}

public List<Product> getData() {
    return product;
}

public void setData(List<Product> data) {
    this.product = data;
}
 }

Product.java

public class Product implements Parcelable {
@SerializedName("product_id")
private String product_id;
@SerializedName("product_name")
private String product_name;
@SerializedName("product_discount")
private String product_discount;
@SerializedName("product_price")
private String product_price;
@SerializedName("product_img")
private String product_img;
@SerializedName("product_url")
private String product_url;
private String category_id;

@SerializedName("product_slug")
private String product_slug;
@SerializedName("product_base_image")
private String product_base_image;

private String size_chart;
private String product_addinfo;
private String product_style;
private String product_details;
private String product_care;
private String product_note;
private String product_material;
private String product_color;
private String product_offer;
private String product_offer_desc;
private String product_stock;
private ArrayList<String> product_thumbnails;
private ArrayList<String> product_images;
// private String product_size;
private String product_notify_text;
private String pincode;
private boolean product_returnable;
private String product_offer_title;
private String product_alert_message;
private ArrayList<String> product_size = new ArrayList<>();
private String product_count;

public Product() {

}


private ArrayList<ProductSizesEntity> product_sizes;
private ArrayList<ProductSizesEntity> product_notify_sizes;

private List<String> dimensions;


protected Product(Parcel in) {
    product_id = in.readString();
    category_id = in.readString();
    product_name = in.readString();
    product_discount = in.readString();
    product_price = in.readString();
    product_img = in.readString();
    size_chart = in.readString();
    product_addinfo = in.readString();
    product_style = in.readString();
    product_details = in.readString();
    product_care = in.readString();
    product_note = in.readString();
    product_material = in.readString();
    product_color = in.readString();
    product_offer = in.readString();
    product_offer_desc = in.readString();
    product_stock = in.readString();
    product_thumbnails = in.createStringArrayList();
    product_images = in.createStringArrayList();
    //product_size = in.readString();
    product_size = in.createStringArrayList();
    product_notify_text = in.readString();
    pincode = in.readString();
    product_returnable = in.readByte() != 0;
    product_offer_title = in.readString();
    product_alert_message = in.readString();
    product_count = in.readString();
    product_url = in.readString();

}


public static final Creator<Product> CREATOR = new Creator<Product>() {
    @Override
    public Product createFromParcel(Parcel in) {
        return new Product(in);
    }

    @Override
    public Product[] newArray(int size) {
        return new Product[size];
    }
};


public String getProduct_offer() {
    return product_offer;
}

public String getProduct_offer_desc() {
    return product_offer_desc;
}

public String getCategory_id() {
    return category_id;
}

public void setProduct_offer(String product_offer) {
    this.product_offer = product_offer;
}

public void setProduct_offer_desc(String product_offer_desc) {
    this.product_offer_desc = product_offer_desc;
}

public void setCategory_id(String category_id) {
    this.category_id = category_id;
}

public void setProduct_id(String product_id) {
    this.product_id = product_id;
}

public void setProduct_name(String product_name) {
    this.product_name = product_name;
}

public void setProduct_discount(String product_discount) {
    this.product_discount = product_discount;
}

public void setProduct_price(String product_price) {
    this.product_price = product_price;
}

public void setProduct_img(String product_img) {
    this.product_img = product_img;
}

public void setSizeChart_img(String sizechart_img) {
    this.size_chart = sizechart_img;
}

public void setProduct_addinfo(String product_addinfo) {
    this.product_addinfo = product_addinfo;
}

public void setProduct_style(String product_style) {
    this.product_style = product_style;
}

public void setProduct_details(String product_details) {
    this.product_details = product_details;
}

public void setProduct_care(String product_care) {
    this.product_care = product_care;
}

public void setProduct_note(String product_note) {
    this.product_note = product_note;
}

public void setProduct_material(String product_material) {
    this.product_material = product_material;
}

public void setProduct_color(String product_color) {
    this.product_color = product_color;
}


public void setProduct_stock(String product_stock) {
    this.product_stock = product_stock;
}

public void setProduct_thumbnails(ArrayList<String> product_thumbnails) {
    this.product_thumbnails = product_thumbnails;
}

public void setProduct_images(ArrayList<String> product_images) {
    this.product_images = product_images;
}

public void setProduct_sizes(ArrayList<ProductSizesEntity> product_sizes) {
    this.product_sizes = product_sizes;
}

public void setProduct_notify_sizes(ArrayList<ProductSizesEntity> product_notify_sizes) {
    this.product_notify_sizes = product_notify_sizes;
}


public void setDimensions(List<String> dimensions) {
    this.dimensions = dimensions;
}

public String getProduct_id() {
    return product_id;
}

public String getProduct_name() {
    return product_name;
}

public String getProduct_discount() {
    return product_discount;
}

public String getProduct_price() {
    return product_price;
}

public String getProduct_img() {
    return product_img;
}

public String getSizeChart_img() {
    return size_chart;
}

public String getProduct_addinfo() {
    return product_addinfo;
}

public String getProduct_style() {
    return product_style;
}

public String getProduct_details() {
    return product_details;
}

public String getProduct_care() {
    return product_care;
}

public String getProduct_note() {
    return product_note;
}

public String getProduct_material() {
    return product_material;
}

public String getProduct_color() {
    return product_color;
}

public String getProduct_stock() {
    return product_stock;
}

public ArrayList<String> getProduct_thumbnails() {
    return product_thumbnails;
}

public ArrayList<String> getProduct_images() {
    return product_images;
}

public ArrayList<ProductSizesEntity> getProduct_sizes() {
    return product_sizes;
}

public ArrayList<ProductSizesEntity> getProduct_notify_sizes() {
    return product_notify_sizes;
}

public List<String> getDimensions(List<String> dimensions) {
    return dimensions;
}

public String getProduct_url() {
    return product_url;

}
public String getProduct_base_image() {
    return product_base_image;
}

public void setProduct_base_image(String product_base_image) {
    this.product_base_image = product_base_image;
}


public void setProduct_url(String product_url) {
    this.product_url = product_url;
}

public String getDimensionAsString() {
    String strText = null;
    if (!(dimensions == null))
        strText = TextUtils.join(", ", dimensions);
    return strText;
}

@Override
public int describeContents() {
    return 0;
}


@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeString(product_id);
    dest.writeString(category_id);
    dest.writeString(product_name);
    dest.writeString(product_discount);
    dest.writeString(product_price);
    dest.writeString(product_img);
    dest.writeString(size_chart);
    dest.writeString(product_addinfo);
    dest.writeString(product_style);
    dest.writeString(product_details);
    dest.writeString(product_care);

    dest.writeString(product_note);
    dest.writeString(product_material);
    dest.writeString(product_color);
    dest.writeString(product_offer);
    dest.writeString(product_offer_desc);
    dest.writeString(product_stock);
    dest.writeStringList(product_thumbnails);
    dest.writeStringList(product_images);
    //dest.writeString(product_size);
    dest.writeStringList(product_size);
    dest.writeString(product_notify_text);
    dest.writeString(pincode);
    dest.writeByte((byte) (product_returnable ? 1 : 0));
    dest.writeString(product_offer_title);
    dest.writeString(product_alert_message);
    dest.writeString(product_count);
    dest.writeString(product_url);

}

public void setProduct_size(String product_size) {
    // this.product_size = product_size;
    this.product_size.add(product_size);
}

public ArrayList<String> getProduct_size() {
    return product_size;
}

public void setProduct_notify_text(String product_notify_text) {
    this.product_notify_text = product_notify_text;
}

public String getProduct_notify_text() {
    return product_notify_text;
}

public void setPincode(String pincode) {
    this.pincode = pincode;
}

public String getPincode() {
    return pincode;
}

public void setProduct_returnable(boolean product_returnable) {
    this.product_returnable = product_returnable;
}

public boolean isProduct_returnable() {
    return product_returnable;
}

public void setProduct_offer_title(String product_offer_title) {
    this.product_offer_title = product_offer_title;
}

public String getProduct_offer_title() {
    return product_offer_title;
}

public void setProduct_alert_message(String product_alert_message) {
    this.product_alert_message = product_alert_message;
}

public String getProduct_alert_message() {
    return product_alert_message;
}


public void setProduct_count(String product_count) {
    this.product_count = product_count;
}

public String getProduct_count() {
    return product_count;
}

public String getProduct_slug() {
    return product_slug;
}

public void setProduct_slug(String product_slug) {
    this.product_slug = product_slug;
}


public static class ProductSizesEntity {
    private String attr_id;
    private String quantity;
    private String attr_value;

    public void setAttr_id(String attr_id) {
        this.attr_id = attr_id;
    }

    public void setQuantity(String quantity) {
        this.quantity = quantity;
    }

    public void setAttr_value(String attr_value) {
        this.attr_value = attr_value;
    }

    public String getAttr_id() {
        return attr_id;
    }

    public String getQuantity() {
        return quantity;
    }

    public String getAttr_value() {
        return attr_value;
    }
}
}

我就是这样用的

 ProductResult products  = gson.fromJson(obj.toString(),   ProductResult.class);
 mReceiver.onResponse(products, tag);

提前致谢

【问题讨论】:

  • json 响应中的“产品”属性在哪里?
  • 请检查您作为链接发布的回复链接。它没有产品属性
  • @Vinodh 是的,是的..对不起,我更新了,请立即查看
  • @Vinodh 这里是回复:pastie.org/10980224
  • 创建 POJO 类的更简单方法json2csharp.com/# 复制您的响应并生成。您将获得所需的 POJO。

标签: android json android-volley illegalstateexception gson


【解决方案1】:

data 不是您的 json 中的 JsonArray,它是一个 jsonobject。所以你应该使用

@SerializedName("data")
private Product product;

而不是

@SerializedName("data")
private List<Product> product;

你的第二堂课有很多问题。我提供了一个online tool,您可以在其中在线创建 POJO 类。在这里,您需要输入您的 Json 字符串并单击 zip。它会给你一个选项来下载具有正确类的 zip 文件。

【讨论】:

  • @pankaj...感谢您的回复,但我早些时候尝试过使用产品,在这种情况下我得到了非法参数异常
  • 我检查并告诉你
  • @pankaj...我得到了这个错误“原因:java.lang.IllegalStateException: 预期 BEGIN_OBJECT 但在第 1 行第 42 列路径 $.data 处是 BEGIN_ARRAY”
  • 检查您的 json 数据。以及你用来创建 POJO 的东西。
  • 我检查了您发送的链接,它与我的代码相同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2021-10-23
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
  • 1970-01-01
相关资源
最近更新 更多