网站备案 图片大小,如何制作一个个人网页,网站名词排名怎么做,品牌网站建设 磐石网络的确好文章目录1. 复现问题2. 分析问题3. 解决问题4. 该错误的其他解决方法5. 重要补充1. 复现问题
今天在JSONObject.parse(json)这个方法时#xff0c;却报出如下错误#xff1a;
com.alibaba.fastjson.JSONException: syntax error, position at 0, name usernameat com.aliba…
文章目录1. 复现问题2. 分析问题3. 解决问题4. 该错误的其他解决方法5. 重要补充1. 复现问题
今天在JSONObject.parse(json)这个方法时却报出如下错误
com.alibaba.fastjson.JSONException: syntax error, position at 0, name usernameat com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:615)at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1367)at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1333)at com.alibaba.fastjson.JSON.parse(JSON.java:155)at com.alibaba.fastjson.JSON.parse(JSON.java:165)at com.alibaba.fastjson.JSON.parse(JSON.java:134)at com.sugon.cloud.lowcode.CommonTest.testJacksonParseJson(CommonTest.java:130)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.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)............简单来说问题就是syntax error, position at 0, name username。
2. 分析问题
syntax error, position at 0, name username错误来自ChatGPT的解释如下图 ChatGPT告诉我我的代码中有语法错误变量名称为username。
于是查找我的代码如下所示
Test
public void testJacksonParseJson(){String json {\username\:\admin\\nickname\:\管理员\};Object parse JSONObject.parse(json);System.out.println(parse);
}通过对我的代码排查username变量没有问题。
当然无法用肉眼去辨别这种错误需要借助在线解析json的工具该工具地址为json在线解析。
我把json语句复制到工具中让工具帮我校验如下图所示 由于上述代码中的json是转义后的语句因为我们点击去转义按钮如下图所示 此时点击校验 / 格式化按钮便能看到是哪里出错了如下图所示 从错误信息以及json对象可以清晰地看到admin后没有加上逗号(英文逗号)。
3. 解决问题
既然admin后没有加上逗号(英文逗号)我们加上逗号即可如下代码所示 Testpublic void testJacksonParseJson(){String json {\username\:\admin\,\nickname\:\管理员\};Object parse JSONObject.parse(json);System.out.println(parse);}重新启动测试类即可成功解析该json语句如下图所示 4. 该错误的其他解决方法
如果上述无法解决你的问题可以参考如下方法去解决你的这个问题。
有可能是单引号引发的问题比如获取到前台传来如下参数
{‘key1’:‘value1’
}实际上json对象为双引号如下所示
{key1: value1
}此时有两种解决方式 前端修改json参数不使用单引号 后端将单引号变成双引号。
如果你还有其他方法去解决该问题欢迎在评论区留言。
5. 重要补充
之前喜欢使用谷歌翻译报错的信息自从出现了ChatGPT便喜欢使用ChatGPT来翻译。
如果你想了解什么是ChatGPT以及它的用法可以点击如下链接 全网最详细的介绍ChatGPT ChatGPT、低代码等技术出现会不会导致底层程序员失业 全网推荐7款github上有趣的ChatGPT的应用源码 如何调用ChatGPT的API接口到官方例子的说明以及GitHub上的源码应用 全网详细解读基于java调用ChatGPT的API接口