fastjson对象属性值相似的bug

7z5jn7bk  于 2021-11-27  发布在  Java
关注(0)|答案(5)|浏览(380)

@DaTa
public class OrderInfoVO implements Serializable {
private static final long serialVersionUID = 1L;
/**

  • 订单id

  • /

private int orderId;
/**

  • 项目状态

  • /

private int status;
/**

  • 订单状态
    */
    private int orderStatus;
    private int oldStatus;
    private int oldOrderStatus;
    }
    对象的 属性名称相似,导致新旧属性值一样,当然这种情况是偶然发生的,发生的概率比较小,盼早日修复.
    eg:
    orderStatus=2,
    oldOrderStatus=3;
    该对象执行JSONObject.toJSONString(orderInfoVO)时,出现上述情况。
egmofgnx

egmofgnx1#

我测试过没问题,测试代码如下:

public class Issue1933 extends TestCase {
    public void test_for_issue() throws Exception {
        OrderInfoVO v0 = JSON.parseObject("{\"orderStatus\":1}", OrderInfoVO.class);
        assertEquals(1, v0.orderStatus);
        assertEquals(0, v0.oldStatus);
        assertEquals(0, v0.oldOrderStatus);
    }

    public void test_for_issue_1() throws Exception {
        OrderInfoVO v0 = JSON.parseObject("{\"oldStatus\":1}", OrderInfoVO.class);
        assertEquals(0, v0.orderStatus);
        assertEquals(1, v0.oldStatus);
        assertEquals(0, v0.oldOrderStatus);
    }

    public void test_for_issue_2() throws Exception {
        OrderInfoVO v0 = JSON.parseObject("{\"oldOrderStatus\":1}", OrderInfoVO.class);
        assertEquals(0, v0.orderStatus);
        assertEquals(0, v0.oldStatus);
        assertEquals(1, v0.oldOrderStatus);
    }

    public static class OrderInfoVO {
        private int orderStatus;
        private int oldStatus;
        private int oldOrderStatus;

        public int getOrderStatus() {
            return orderStatus;
        }

        public void setOrderStatus(int orderStatus) {
            this.orderStatus = orderStatus;
        }

        public int getOldStatus() {
            return oldStatus;
        }

        public void setOldStatus(int oldStatus) {
            this.oldStatus = oldStatus;
        }

        public int getOldOrderStatus() {
            return oldOrderStatus;
        }

        public void setOldOrderStatus(int oldOrderStatus) {
            this.oldOrderStatus = oldOrderStatus;
        }
    }
}
yizd12fk

yizd12fk2#

这是有概率的,大多数情况下是没有问题,但是我这边已经出现了两三次了,但是有可能这个方法之前调用了好几千次是没有问题的

k4emjkb1

k4emjkb13#

我是拿到线上日志看到的,同样的接口,同样的数据,前一秒是不合适的,后一秒再请求就正常了,这是是使用的版本:1.2.22和1.1.31两个版本,转换为gson就不会有这样的问题.
这是我看到的一篇博客,https://blog.csdn.net/yangstarss/article/details/80705863,情况和我类似,初步判断是序列化问题,具体没有进行测试

g6ll5ycj

g6ll5ycj4#

序列化时发生的,还是反序列化发生的?

bfhwhh0e

bfhwhh0e5#

具体没怎么去看,因为最近比较忙,没有太多的经历在这个上面,我得出的结论在序列化过程中,但是具体哪个阶段没有关注

相关问题