Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

数组解析错误 #1002

Closed
heyoulin opened this issue Dec 8, 2022 · 5 comments
Closed

数组解析错误 #1002

heyoulin opened this issue Dec 8, 2022 · 5 comments
Labels
bug Something isn't working fixed
Milestone

Comments

@heyoulin
Copy link

heyoulin commented Dec 8, 2022

https://github.com/alibaba/Sentinel 项目改成2.0.20之后解析数组错误,1版不会出错

Caused by: com.alibaba.fastjson2.JSONException: expect {, but [, class com.alibaba.csp.sentinel.command.vo.NodeVo, offset 2, character [, line 1, column 3, fastjson-version 2.0.20 [[{"averageRt":0,"blockQps":0,"exceptionQps":0,"oneMinuteBlock":0,"oneMinuteException":0,"oneMinutePass":0,"oneMinuteTotal":0,"passQps":0,"resource":"pig-upms-biz","successQps":0,"threadNum":0,"timestamp":1670469398062,"totalQps":0},{"averageRt":0,"blockQps":0,"exceptionQps":0,"oneMinuteBlock":0,"oneMinuteException":0,"oneMinutePass":1,"oneMinuteTotal":1,"passQps":0,"resource":"pig-auth","successQps":0,"threadNum":0,"timestamp":1670469398062,"totalQps":0}]]

@heyoulin heyoulin added the bug Something isn't working label Dec 8, 2022
@wenshao wenshao added this to the 2.0.21 milestone Dec 8, 2022
@wenshao
Copy link
Member

wenshao commented Dec 9, 2022

能提供更完整的错误堆栈信息么?

@wenshao wenshao modified the milestones: 2.0.21, 2.0.22 Dec 10, 2022
@heyoulin
Copy link
Author

java.util.concurrent.ExecutionException: com.alibaba.fastjson2.JSONException: expect {, but [, class com.alibaba.csp.sentinel.command.vo.NodeVo, offset 2, character [, line 1, column 3, fastjson-version 2.0.21 [[{"averageRt":0,"blockQps":0,"exceptionQps":0,"oneMinuteBlock":0,"oneMinuteException":0,"oneMinutePass":0,"oneMinuteTotal":0,"passQps":0,"resource":"pig-upms-biz","successQps":0,"threadNum":0,"timestamp":1672290824462,"totalQps":0},{"averageRt":0,"blockQps":0,"exceptionQps":0,"oneMinuteBlock":0,"oneMinuteException":0,"oneMinutePass":6,"oneMinuteTotal":6,"passQps":0,"resource":"pig-auth","successQps":0,"threadNum":0,"timestamp":1672290824462,"totalQps":0}]] at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396) ~[na:na] at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073) ~[na:na] at com.alibaba.csp.sentinel.dashboard.client.SentinelApiClient.fetchItems(SentinelApiClient.java:383) ~[sentinel-dashboard-2.0.1.B.jar:na] at com.alibaba.csp.sentinel.dashboard.client.SentinelApiClient.fetchClusterNodeOfMachine(SentinelApiClient.java:466) ~[sentinel-dashboard-2.0.1.B.jar:na] at com.alibaba.csp.sentinel.dashboard.controller.ResourceController.fetchResourceChainListOfMachine(ResourceController.java:79) ~[sentinel-dashboard-2.0.1.B.jar:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:578) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) ~[spring-web-6.0.3.jar:6.0.3] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) ~[spring-web-6.0.3.jar:6.0.3] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-6.0.3.jar:6.0.3] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-webmvc-6.0.3.jar:6.0.3] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-6.0.3.jar:6.0.3] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.3.jar:6.0.3] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1080) ~[spring-webmvc-6.0.3.jar:6.0.3] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:973) ~[spring-webmvc-6.0.3.jar:6.0.3] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1010) ~[spring-webmvc-6.0.3.jar:6.0.3] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:902) ~[spring-webmvc-6.0.3.jar:6.0.3] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:527) ~[jakarta.servlet-api-6.0.0.jar:6.0.0] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:884) ~[spring-webmvc-6.0.3.jar:6.0.3] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) ~[jakarta.servlet-api-6.0.0.jar:6.0.0] at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at com.alibaba.csp.sentinel.adapter.servlet.CommonFilter.doFilter(CommonFilter.java:110) ~[sentinel-web-servlet-2.0.1.B.jar:na] at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at com.alibaba.csp.sentinel.dashboard.auth.DefaultLoginAuthenticationFilter.doFilter(DefaultLoginAuthenticationFilter.java:116) ~[sentinel-dashboard-2.0.1.B.jar:na] at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.3.jar:6.0.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.3.jar:6.0.3] at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.3.jar:6.0.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.3.jar:6.0.3] at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:109) ~[spring-web-6.0.3.jar:6.0.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.3.jar:6.0.3] at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.3.jar:6.0.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.3.jar:6.0.3] at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.3.2.Final.jar:2.3.2.Final] at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) ~[undertow-core-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) ~[undertow-core-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) ~[undertow-core-2.3.2.Final.jar:2.3.2.Final] at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.SessionRestoringHandler.handleRequest(SessionRestoringHandler.java:119) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:276) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:132) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:256) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:101) ~[undertow-servlet-2.3.2.Final.jar:2.3.2.Final] at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393) ~[undertow-core-2.3.2.Final.jar:2.3.2.Final] at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:859) ~[undertow-core-2.3.2.Final.jar:2.3.2.Final] at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18) ~[jboss-threads-3.5.0.Final.jar:3.5.0.Final] at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513) ~[jboss-threads-3.5.0.Final.jar:3.5.0.Final] at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538) ~[jboss-threads-3.5.0.Final.jar:3.5.0.Final] at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282) ~[xnio-api-3.8.8.Final.jar:3.8.8.Final] at java.base/java.lang.Thread.run(Thread.java:1589) ~[na:na] Caused by: com.alibaba.fastjson2.JSONException: expect {, but [, class com.alibaba.csp.sentinel.command.vo.NodeVo, offset 2, character [, line 1, column 3, fastjson-version 2.0.21 [[{"averageRt":0,"blockQps":0,"exceptionQps":0,"oneMinuteBlock":0,"oneMinuteException":0,"oneMinutePass":0,"oneMinuteTotal":0,"passQps":0,"resource":"pig-upms-biz","successQps":0,"threadNum":0,"timestamp":1672290824462,"totalQps":0},{"averageRt":0,"blockQps":0,"exceptionQps":0,"oneMinuteBlock":0,"oneMinuteException":0,"oneMinutePass":6,"oneMinuteTotal":6,"passQps":0,"resource":"pig-auth","successQps":0,"threadNum":0,"timestamp":1672290824462,"totalQps":0}]] at com.alibaba.fastjson2.reader.ObjectReaderBean.processObjectInputSingleItemArray(ObjectReaderBean.java:75) ~[fastjson2-2.0.21.jar:na] at com.alibaba.fastjson2.reader.ObjectReader_1.readObject(Unknown Source) ~[na:na] at com.alibaba.fastjson2.JSONReader.readArray(JSONReader.java:1842) ~[fastjson2-2.0.21.jar:na] at com.alibaba.fastjson2.JSON.parseArray(JSON.java:2014) ~[fastjson2-2.0.21.jar:na] at com.alibaba.csp.sentinel.dashboard.client.SentinelApiClient.lambda$fetchItemsAsync$6(SentinelApiClient.java:370) ~[sentinel-dashboard-2.0.1.B.jar:na] at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646) ~[na:na] at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[na:na] at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179) ~[na:na] at com.alibaba.csp.sentinel.dashboard.client.SentinelApiClient$2.completed(SentinelApiClient.java:327) ~[sentinel-dashboard-2.0.1.B.jar:na] at com.alibaba.csp.sentinel.dashboard.client.SentinelApiClient$2.completed(SentinelApiClient.java:320) ~[sentinel-dashboard-2.0.1.B.jar:na] at org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:122) ~[httpcore-4.4.16.jar:4.4.16] at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseCompleted(DefaultClientExchangeHandlerImpl.java:182) ~[httpasyncclient-4.1.5.jar:4.1.5] at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processResponse(HttpAsyncRequestExecutor.java:448) ~[httpcore-nio-4.4.16.jar:4.4.16] at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputReady(HttpAsyncRequestExecutor.java:338) ~[httpcore-nio-4.4.16.jar:4.4.16] at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:265) ~[httpcore-nio-4.4.16.jar:4.4.16] at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:87) ~[httpasyncclient-4.1.5.jar:4.1.5] at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:40) ~[httpasyncclient-4.1.5.jar:4.1.5] at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114) ~[httpcore-nio-4.4.16.jar:4.4.16] at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162) ~[httpcore-nio-4.4.16.jar:4.4.16] at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337) ~[httpcore-nio-4.4.16.jar:4.4.16] at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315) ~[httpcore-nio-4.4.16.jar:4.4.16] at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276) ~[httpcore-nio-4.4.16.jar:4.4.16] at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) ~[httpcore-nio-4.4.16.jar:4.4.16] at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591) ~[httpcore-nio-4.4.16.jar:4.4.16] ... 1 common frames omitted

@heyoulin
Copy link
Author

JSONArray.of(list).toJSONString() 产生的字符串是这样的[[{........}]] 反序列化出这个错误
而JSON.toJSONString(list) 产生的字符串是这样的[{........}] 这个反序列化没问题

@wenshao
Copy link
Member

wenshao commented Dec 29, 2022

JSONArray.of方法和JDK9的List.of方法类似,of(list)传入的list是当元素处理。

https://oss.sonatype.org/content/repositories/snapshots/com/alibaba/fastjson2/fastjson2/2.0.22-SNAPSHOT/

新增加了一个方法:static JSONArray copyOf(Collection collection)

    public static JSONArray copyOf(Collection collection) {
        return new JSONArray(collection);
    }

请帮忙用2.0.22-SNAPSHOT版本验证,2.0.22版本预计在元旦期间发布

@wenshao wenshao added the fixed label Dec 29, 2022
@wenshao
Copy link
Member

wenshao commented Dec 31, 2022

https://github.com/alibaba/fastjson2/releases/tag/2.0.22
新版本已发布,请用新版本

@wenshao wenshao closed this as completed Dec 31, 2022
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
bug Something isn't working fixed
Projects
None yet
Development

No branches or pull requests

2 participants