alibaba / fastjson

FASTJSON 2.0.x has been released, faster and more secure, recommend you upgrade.
https://github.com/alibaba/fastjson2/wiki/fastjson_1_upgrade_cn
Apache License 2.0
25.73k stars 6.5k forks source link

静态内部类序列化偶现异常,属性方法为public,类为default #4356

Open Pushuai opened 1 year ago

Pushuai commented 1 year ago

fastjson版本1.2.83 静态内部类序列化偶现异常,属性方法为public,类为default com.alibaba.fastjson.JSONException: write javaBean error, fastjson version 1.2.83, class com.vivo.internet.vapd.logger.log.HttpLogAspect$Param, fieldName : 0, Class com.alibaba.fastjson.util.FieldInfo can not access a member of class com.vivo.internet.vapd.logger.log.HttpLogAspect$Param with modifiers "public" at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSerializer.java:541) ~[fastjson-1.2.83.jar:na] at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSerializer.java:154) ~[fastjson-1.2.83.jar:na] at com.alibaba.fastjson.serializer.ListSerializer.write(ListSerializer.java:135) ~[fastjson-1.2.83.jar:na] at com.alibaba.fastjson.serializer.JSONSerializer.write(JSONSerializer.java:312) ~[fastjson-1.2.83.jar:na] at com.alibaba.fastjson.JSON.toJSONString(JSON.java:793) ~[fastjson-1.2.83.jar:na] at com.alibaba.fastjson.JSON.toJSONString(JSON.java:731) ~[fastjson-1.2.83.jar:na] at com.alibaba.fastjson.JSON.toJSONString(JSON.java:688) ~[fastjson-1.2.83.jar:na] at com.vivo.internet.vapd.logger.log.HttpLogAspect.aroundMethod(HttpLogAspect.java:65) ~[vapd-logger-1.0.0-SNAPSHOT.jar:na]

类信息如下,部分代码已忽略 public class HttpLogAspect {

private final static Logger log = LoggerFactory.getLogger(HttpLogAspect.class);

private static final Logger statLog = LoggerFactory.getLogger("STAT-DIGEST");

private Set<String> httpLogExcludeUrls = new HashSet<>();

@Pointcut("within(@org.springframework.web.bind.annotation.RestController *)" +
        "|| within(@org.springframework.stereotype.Controller *)")
public void pointService() {

}

@Around("pointService()")
public Object aroundMethod(ProceedingJoinPoint joinPoint) throws Throwable {
    /**
     * 忽略
     */
    List<Param> params = this.getParams(joinPoint);
    if (params == null || params.size() == 0) {
        log.info("接口路径 {} 用户工号 {} ,入参为空", requestUrl, userCode);
    } else {
        log.info("接口路径 {} 用户工号 {} ,入参 {}", requestUrl, userCode, JSONObject.toJSONString(params));
    }
    /**
     * 忽略
     */
}

static class Param {

    private String argName;

    private Object argValue;

    public Param(String argName, Object argValue) {
        this.argName = argName;
        this.argValue = argValue;
    }

    public String getArgName() {
        return argName;
    }

    public void setArgName(String argName) {
        this.argName = argName;
    }

    public Object getArgValue() {
        return argValue;
    }

    public void setArgValue(Object argValue) {
        this.argValue = argValue;
    }
}

}

wenshao commented 1 year ago

https://github.com/alibaba/fastjson2/releases/tag/2.0.47 请升级到2.0.47版本

BEWINDOWEB commented 5 months ago

@Pushuai 请问下有测试出这个问题稳定复现的条件吗🙏