当前位置: 首页 > wzjs >正文

国际交友网站开发网络产品运营与推广

国际交友网站开发,网络产品运营与推广,建设网站接活,东莞建网站公司哪个好解决fastJson JSON.parseArray方法 非法字符问题 1. 问题描述2. 解决办法3. 📌 各字符说明: 1. 问题描述 数据库中某个字段存储的数据是JSON类型,取出数据时需要JSON.parseArray 但是爆出如下错误 2025-04-17 16:20:55.650 [http-nio-0.0.0…

解决fastJson JSON.parseArray方法 非法字符问题

  • 1. 问题描述
  • 2. 解决办法
  • 3. 📌 各字符说明:

1. 问题描述

数据库中某个字段存储的数据是JSON类型,取出数据时需要JSON.parseArray 但是爆出如下错误

2025-04-17 16:20:55.650 [http-nio-0.0.0.0-8080-exec-1] ERROR c.a.i.k.g.c.a.t.CronUpdateTaskController - [result]图谱结果,失败,offset 3, character  , line 2, column 2, fastjson-version 2.0.52
[{"relationType": "搭档","num": 15},{"relationType": "好友","num": 12},{"relationType": "前女友","num": 2},{"relationType": "同学","num": 1},{"relationType": "女儿","num": 1},{"relationType": "妻子","num": 1}
]
2025-04-17 16:20:55.660 [http-nio-0.0.0.0-8080-exec-1] ERROR c.a.i.k.g.f.w.h.GlobalExceptionHandler - [defaultExceptionHandler]
com.alibaba.fastjson2.JSONException: offset 3, character  , line 2, column 2, fastjson-version 2.0.52
[{"relationType": "搭档","num": 15},{"relationType": "好友","num": 12},{"relationType": "前女友","num": 2},{"relationType": "同学","num": 1},{"relationType": "女儿","num": 1},{"relationType": "妻子","num": 1}
]at com.alibaba.fastjson2.reader.ObjectReaderImplObject.readObject(ObjectReaderImplObject.java:302)at com.alibaba.fastjson2.JSONReader.read(JSONReader.java:1860)at com.alibaba.fastjson2.JSON.parseArray(JSON.java:2473)at cn.ac.ict.knowledge.graph.service.task.UpdateTaskServiceImpl.buildRelation(UpdateTaskServiceImpl.java:919)at cn.ac.ict.knowledge.graph.service.task.UpdateTaskServiceImpl.result(UpdateTaskServiceImpl.java:902)at cn.ac.ict.knowledge.graph.controller.app.task.CronUpdateTaskController.result(CronUpdateTaskController.java:176)at cn.ac.ict.knowledge.graph.controller.app.task.CronUpdateTaskController$$FastClassBySpringCGLIB$$6687128f.invoke(<generated>)at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:792)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:64)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:57)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:707)at cn.ac.ict.knowledge.graph.controller.app.task.CronUpdateTaskController$$EnhancerBySpringCGLIB$$649ef656.result(<generated>)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)at javax.servlet.http.HttpServlet.service(HttpServlet.java:555)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)at cn.dev33.satoken.filter.SaPathCheckFilterForServlet.doFilter(SaPathCheckFilterForServlet.java:55)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)

有用的信息

com.alibaba.fastjson2.JSONException: offset 3, character  , line 2, column 2, fastjson-version 2.0.52

看起来是字符非法的问题,因为JSON本身没问题。

2. 解决办法

经过了解很可能是这个 JSON 字符串中混入了 不可见的非法字符(比如全角空格、BOM头、Unicode空白符等),尤其是[ 后面那一行里的空格,是个 非 ASCII 空格(全角空格 U+3000 或 Unicode 空格),fastjson2 解析的时候直接报错。

我直接通过工具类来清洗数据

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.9</version>
</dependency>
import org.apache.commons.lang3.StringUtils;JSON.parseArray(StringUtils.trim(ABC.getTagInfo())
.replaceAll("[\\uFEFF\\u200B\\u00A0\\u3000\\u202F\\u2007]", ""));

问题完美解决!

3. 📌 各字符说明:

在这里插入图片描述

http://www.dtcms.com/wzjs/466729.html

相关文章:

  • 苏州集团网站设计开发网站优化外包顾问
  • 锦州市做网站google搜索引擎入口
  • 网站制作公司违法安卓在线视频嗅探app
  • 商城网站建设相关费用seo网站优化方案
  • 山东省建设厅网站一体化平台口碑营销案例
  • 做网站免费的域名厦门百度推广排名优化
  • 免费搭建手机网站下载app到手机上并安装
  • 滕州营销型网站百度建站官网
  • 网站运营需要学什么pc端网页设计公司
  • 中国西陆最新军事新闻杭州百家号优化
  • 专业房地产网站建设24小时网站建设
  • 国外 网站有做验证码吗最佳搜索引擎磁力
  • 南和企业做网站惠州百度seo地址
  • 加强门户网站建设的讲话seo工作内容
  • 电子商务网站建设 期末考试试卷以及答案杭州seo网络推广
  • 怎么制作网站维护公告效果杭州明开seo
  • 河南网站建设技术公司南宁百度seo推广
  • 网站建设需求文案合肥网站制作
  • html5做动态网站建设收录排名好的发帖网站
  • 想自己做网站该学些什么家庭优化大师免费下载
  • 找人做网站去哪里找电脑系统优化工具
  • 湖南公众信息网官网黄冈网站seo
  • 网站备案文件照片html网页制作模板代码
  • 北海网站建设网seo01
  • 四川省住房和城乡建设网站宣城网站seo
  • 巨野网站定制群排名优化软件
  • wordpress网站维护长尾关键词搜索网站
  • 网站建设公司如何开拓客户怎么推广销售
  • 做网站开发工资怎样品牌运营公司
  • 简约的网站怎么打广告宣传自己的产品