5
@ApiModelProperty(value= "支出类合同类型") @JSONField(format= "trim") private String contractType;
当前端入参是:"contractType": null 这个时候会报 JSON parse error: null; nested exception is com.alibaba.fastjson.JSONException
@ApiModelProperty(value= "支出类合同类型") @JSONField(format= "trim") private String contractType;
当前端入参是:"contractType": null 这个时候会报 JSON parse error: null; nested exception is com.alibaba.fastjson.JSONException
1.2.77_preview_01
package com.alibaba.json.bvt.issue_3400;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;
import org.junit.Test;
public class Issue3426 {
private static final String test_str = "{\"contractType\": null}";
@Test
public void test_1() {
System.out.println(JSON.parseObject(test_str, issue3429_a.class));
}
}
class issue3426_a {
//TODO @ApiModelProperty(value= "支出类合同类型")
@JSONField(format = "trim")
private String contractType;
}
输出为
com.alibaba.json.bvt.issue_3400.issue3426_a@2c6a3f77
无异常.
@yuanyong1014 能提供下最小复现demo吗
问题可能在后续的版本已经修复了。 从表象上看,可能是因为 contractType 为Null时,结果调用了 format定义的trim方法导致的空指针。
@Certseeds @harkue @wenshao
上边这个例子contractType没有提供get/set方法,你这个无法被反序列化。 你提供get/set方法就会抛异常了。
我使用的1.2.78版本,仍然有此问题。
问题代码在:com.alibaba.fastjson.parser.deserializer.FieldDeserializer#setValue(java.lang.Object, java.lang.Object),走到第二个分支了。没有走第一直分支