[alibaba/fastjson]bug fix:Feature.TrimStringFieldValue未生效

2024-09-20 998 views
2

当反序列化走到stringVal()方法中时,对类似{"name":"1", "email":" 390256"}的json,进行反序列化 JSON.parseObject(str, Vo.class, Feature.OrderedField, Feature.TrimStringFieldValue); 时,Vo实例中的email属性值的空格并没有被去掉。

回答

2

不要格式化代码,这样看不出修改的内容

4

不是刻意格式化代码,不清楚怎么格式化的。 改动的地方只有一个,com.alibaba.fastjson.parser.JSONScanner.java,stringVal()方法:

下面是改动后的代码: /**

  • The value of a literal token, recorded as a string. For integers, leading 0x and 'l' suffixes are suppressed. */ public final String stringVal() { String s; if (!hasSpecial) { s = this.subString(np + 1, sp); } else { s = new String(sbuf, 0, sp); }

    if( (this.features & Feature.TrimStringFieldValue.mask)!=0 )
        s = s.trim();
    return s;

    }

下面是改动前的代码: /**

  • The value of a literal token, recorded as a string. For integers, leading 0x and 'l' suffixes are suppressed. */ public final String stringVal() { String s; if (!hasSpecial) { s = this.subString(np + 1, sp); } else { s = new String(sbuf, 0, sp); } return s; }

不知道已经closed的东西是否您还能看到。希望还能吧