我正在使用一个网络服务,不幸的是我无法控制它,有一个名为 price 的元素可以有两种类型的值,它可以是双精度值:
price: 263.12
或具有特定格式的字符串:
price: "263.12;Y"
在第二种情况下 ;N 表示可以修改价格(即:可以添加折扣),我试图说服服务的开发人员修改响应并发送 Y 或 N(视情况而定)一个单独的值(折扣:“Y”|“N:),但他们说现在他们不会这样做。
在我为这个案例声明的 POJO 中,我有以下案例:
private float precio;
public void setPrice(String value){
if(value.indexOf(";") == -1){
price = Float.parseFloat(value);
} else {
String[] p = value.split(";");
price = Float.parseFloat(p[0]);
}
}
public float getPrice(){return price;}
但不幸的是使用:
Product obj = new Gson().fromJson(response, Product.class);
从来没有真正调用过setter,在将价格设置为适当的双精度的情况下,它工作得很好,但是在我收到字符串的地方它只是崩溃了,任何关于如何处理的建议,最坏的情况我可以创建第二个 POJO 并尝试/捕获对象创建,但应该有更好的想法,到目前为止搜索没有产生任何结果。