【问题标题】:how to remove java.lang.numberformatexception: invalid double: ""如何删除 java.lang.numberformatexception: invalid double: ""
【发布时间】:2018-03-20 11:18:37
【问题描述】:

我有一个方法可以获取数据库中的所有项目,但是我不知道是什么问题,它总是说 java.lang.numberformatexception: invalid double: ""。任何帮助将不胜感激。

我的代码:

@Override
        public void processFinish(String s) {
            productList = new JsonConverter<Products>().toArrayList(s, Products.class);
            BindDictionary dic = new BindDictionary();

            dic.addStringField(R.id.tvName, new StringExtractor<Products>() {
                @Override
                public String getStringValue(Products item, int position) {
                    return item.name;
                }
            });
            dic.addStringField(R.id.tvDesc, new StringExtractor<Products>() {
                @Override
                public String getStringValue(Products item, int position) {
                    return item.description;
                }
            }).visibilityIfNull(View.GONE);

            dic.addStringField(R.id.tvPrice, new StringExtractor<Products>(){

                @Override
                public String getStringValue(Products item, int position) {
                    return ""+item.price;

                    //return String.valueOf(item.price);
                }
            });

            dic.addDynamicImageField(R.id.ivImage, new StringExtractor<Products>() {
                @Override
                public String getStringValue(Products item, int position) {
                    return item.img_url;
                }
            }, new DynamicImageLoader() {
                @Override
                public void loadImage(String url, ImageView img) {
                    //Set image
                    ImageLoader.getInstance().displayImage(url, img);
                }
            });

        }

Products.java

公共类 Products 实现 Serializable {

@SerializedName("itemID")
public int id;

@SerializedName("productName")
public String name;

@SerializedName("descrt")
public String description;

@SerializedName("price")
public double price;

@SerializedName("my_img")
public String img_url;

}

提前致谢。

【问题讨论】:

  • 我认为这不是异常的相关代码,你没有在任何地方使用 double
  • 什么意思?我真的不知道这个问题的原因是什么
  • 你能分享一下 Products.java
  • 您是否将任何值转换为 double ?
  • 我想,我没什么好谈的

标签: android


【解决方案1】:

这个错误是因为你的 Products.java

您的 Products.java 中有一个名为 price 的双重类型属性,

当您将 json 对象转换为 java 对象时,这两种类型必须相同。在你的情况下,

你得到一个

{ 
 ...
 price:"",
 ....
}

在您的 json 对象中。但是在java方面,它等待双值。您可以发送 price:0.0 而不是 price:"" 或编写自己的转换器。

【讨论】:

  • 我会把 0.0 放在那个空白的 qoute 上?
  • 在 JSON 端是,将空白 qoute 更改为 0.0 因为价格变量不是字符串。
  • 你可以通过jsonschema2pojo.org链接生成你的pojo对象。只需粘贴您的 JSON 示例,它将为您生成 java 对象
【解决方案2】:

首先查看您要发送的价格的数据类型。我很久以前也遇到过同样的情况,我通过传递预期的数据或在发送数据之前将数据解析为所需的类型来解决它。

  @Override
            public double getStringValue(Products item, int position) {
                return ""+item.price;

                //return String.valueOf(item.price);
            }

【讨论】:

  • 在价格上你返回字符串值解析那个字符串来加倍你的问题将得到解决
  • 先生您能帮我吗。
  • 请添加完整的 pojo 类,我会看到,我会提供必要的解决方案
  • 使用 json 模式到 pojo 转换器基于 json 原始数据构建 pojo 复制基于 json 原始数据创建的输出 pojo,以便根据数据类型,您必须传递该值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多