fastjson2 [2.0.1]当子类和父类同时使用注解@JSONField(ordinal=xxx)时,json串字段顺序非预期输出,在fastjson1中无此问题。
此bug经验证未解决(#9)
testcase:
package tmp;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.annotation.JSONField;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class Main {
@Test
public void test() {
Son w = new Son();
w.setUuid("11");
w.setOrderNum(12);
w.setDeptCode(23);
w.setTotalNum(24);
assertEquals("{\"uuid\":\"11\",\"orderNum\":12,\"deptCode\":23,\"totalNum\":24}",
com.alibaba.fastjson.JSON.toJSONString(w));
//failed
assertEquals("{\"uuid\":\"11\",\"orderNum\":12,\"deptCode\":23,\"totalNum\":24}",
JSON.toJSONString(w));
}
class Parent {
@com.alibaba.fastjson.annotation.JSONField(ordinal = 1)
@JSONField(ordinal = 1)
private String uuid;
@com.alibaba.fastjson.annotation.JSONField(ordinal = 2)
@JSONField(ordinal = 2)
private Integer orderNum;
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public Integer getOrderNum() {
return orderNum;
}
public void setOrderNum(Integer orderNum) {
this.orderNum = orderNum;
}
}
class Son extends Parent {
@com.alibaba.fastjson.annotation.JSONField(ordinal = 3)
@JSONField(ordinal = 3)
private int deptCode;
@com.alibaba.fastjson.annotation.JSONField(ordinal = 4)
@JSONField(ordinal = 4)
private int totalNum;
public int getDeptCode() {
return deptCode;
}
public void setDeptCode(int deptCode) {
this.deptCode = deptCode;
}
public int getTotalNum() {
return totalNum;
}
public void setTotalNum(int totalNum) {
this.totalNum = totalNum;
}
}
}
fastjson2 [2.0.1]当子类和父类同时使用注解@JSONField(ordinal=xxx)时,json串字段顺序非预期输出,在fastjson1中无此问题。
此bug经验证未解决(#9)
testcase: