[alibaba/fastjson]解析bigdecmal 出现异常 java.lang.NumberFormatException: Invalid BigInteger: 1800券

2025-10-28 259 views
8

需要解析的数据:{"couponName":"32元抵用券","payMoney":"18.00","totalCouponMoney":"32.00","isCommonUse":true} 解析bean类:/**

  • Created by Administrator on 2018/11/8.
  • 优惠券价格计算返回 */

public class CalcCouponBean { /**

  • 总优惠价格 */ private BigDecimal totalCouponMoney; /**
  • 实际需支付价格 */ private BigDecimal payMoney;

    /**

  • 是否通用 true 通用 false 仅限余额使用 */ private boolean isCommonUse; /**
  • 优惠券名称 */

    private String couponName;

    public BigDecimal getTotalCouponMoney() { return totalCouponMoney; }

    public void setTotalCouponMoney(BigDecimal totalCouponMoney) { this.totalCouponMoney = totalCouponMoney; }

    public BigDecimal getPayMoney() { return payMoney; }

    public void setPayMoney(BigDecimal payMoney) { this.payMoney = payMoney; }

    public String getCouponName() { return couponName; }

    public void setCouponName(String couponName) { this.couponName = couponName; }

    public boolean isCommonUse() { return isCommonUse; }

    public void setCommonUse(boolean commonUse) { isCommonUse = commonUse; }

} 解析方法:JSON.parseObject(baseBean.getData().toString(),CalcCouponBean.class) 问题:无法解析数据,报java.lang.NumberFormatException: Invalid BigInteger: 1800券 可是解析的数据中没有1800券的关键字段 如果我把 bean类中的couponName 字段删除不解析就不会有问题,所以这是什么原因导致的?

回答

9

测了一下正常啊,你双引号没转义?

6

跑了一下,好像没有复现,正常的。

String json = "{\"couponName\":\"32元抵用券\",\"payMoney\":\"18.00\",\"totalCouponMoney\":\"32.00\",\"isCommonUse\":true}";
JSON.parseObject(json, CalcCouponBean.class);
1
JSON.parseObject(baseBean.getData().toString(),CalcCouponBean.class)

能不能把上下文粘贴全,bean是什么? baseBean.getData().toString() 的结果是json字符串么?不是的话,你让JSON如何转?

8

baseBean.getData().toString() 里肯定有 1800券 这个字符串。

0

你好,我也遇到了这个问题,请问最后是怎么解决的?