fastjson PropertyFilter & HttpServletRequest

qncylg1j  于 2021-11-27  发布在  Java
关注(0)|答案(6)|浏览(270)
public static String stringify(Object object, String... ignoreProperties) {
        return JSON.toJSONString(object, new PropertyFilter() {
            @Override
            public boolean apply(Object object, String name, Object value) {
                return !ArrayUtils.contains(ignoreProperties, name);
            }
        });
    }
执行: 
.stringify(request, "asyncContext")

java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)
	at org.apache.catalina.connector.Request.getAsyncContext(Request.java:1704)

这样忽略属性不对的么?那应该怎样?

qkf9rpyu

qkf9rpyu1#

你把 return JSON.toJSONString
换成 return "{}";
试试。

3bygqnnd

3bygqnnd2#

@kimmking 不是这样,我的意思是object里的ignoreProperties字段不输出,类似
org.springframework.beans.BeanUtils#copyProperties(Object, Object, String...)

khbbv19g

khbbv19g3#

我是说问题里的IllegalStateException跟fastjson没关系。

ipakzgxi

ipakzgxi4#

哦,我搞错了,换成PropertyPreFilter就可以了

还有个问题@kimmking :比如一个类可以实现很多接口(A,B接口),,,有木有那种按某个接口或者类(比如A)tojsonstring的,而不把B接口的方法tosting出来

jm81lzqq

jm81lzqq5#

这个问题我在切面中取接口访问参数时,当入参是HttpServeletRequest时也会遇到
代码如下
"访问接口参数:" + JSONObject.toJSONString(joinPoint.getArgs()[i])

rks48beu

rks48beu6#

@JavaxinYao thx fro your comment

相关问题