全网详细总结com.alibaba.fastjson.JSONException: syntax error, position at xxx常见错误方式

news2024/11/28 22:47:10

文章目录

  • 1. 复现问题
  • 2. 分析问题
  • 3. 解决问题
  • 4. 该错误的其他解决方法
  • 5. 重要补充

1. 复现问题

今天在JSONObject.parse(json)这个方法时,却报出如下错误:

com.alibaba.fastjson.JSONException: syntax error, position at 0, name username

	at 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"后没有加上逗号(英文逗号),我们加上逗号即可,如下代码所示:

  @Test
  public 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以及它的用法,可以点击如下链接:

  1. 全网最详细的介绍ChatGPT

  2. ChatGPT、低代码等技术出现会不会导致底层程序员失业

  3. 全网推荐7款github上有趣的ChatGPT的应用源码

  4. 如何调用ChatGPT的API接口到官方例子的说明以及GitHub上的源码应用

  5. 全网详细解读基于java调用ChatGPT的API接口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/344951.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web自动化测试——Junit5篇

文章目录一、相关依赖注入二、注解调用三、断言 Assert四、规定用例执行顺序五、高效参数化1)单参数2)多参数3)文件获取参数4)方法获取数据(动态参数)六、测试套件整活Junit 是一个面向 Java 语言的单元测试…

网络安全-协议爆破-xhydra

网络安全-协议爆破-xhydra 啥叫爆破呢,当你忘记密码了,一个一个去猜想的时候,这个东东就叫暴力破解 简称爆破,而且用程序的组合去一个一个试,时间问题,总有尝试到的那天 爆破前需求 也就是说满足了什么…

数据库测试的认知和分类

数据库测试的认知和分类 目录:导读 系统测试 集成测试 单元测试 功能测试 数据库性能 性能优化分4部分 安全测试 现在的软件系统,尤其是业务应用系统,后台都连接着一个数据库。数据库中存储了大量的数据,数据库的设计是否…

完整爬虫学习笔记(第一章)

文章目录前言:fu:. 爬虫概述:hotdog:原理解剖:one: 服务器渲染:two: 前端JS渲染:fire: 第一个爬虫程序案例总结前言 最近正在学习Python网络爬虫的相关知识,鉴于本人Python水平有限 , 对Python并无太深的理解,所以此文章的主要目的在于抛砖引玉&#xf…

C语言(ANSI C类型限定符)

目录 1.const(恒常性) 2.volatile 3.restrict 1.const(恒常性) 如果我们想处理一个基本类型时,我们可以选择传递类型变量值或类型变量的地址。但有的时候我们传入地址但不想让其修改地址上面存储的值,那么就可以用到const。 这个时候const的作用就到了。…

Ansys Speos | 基于 Workbench 和 Speos 的准直全反射透镜优化设计案例

概述 基于Ansys Speos软件,可以准确建立光学系统模型并进行成像效果仿真。在使用Speos进行光学系统设计过程中,当完成初始光学系统建模后,还需要进一步结合仿真结果,调整出满足设计要求的系统参数,如果采用手动调整参…

香农 | 流行潮(bandwagon)

【编者按:面对当前的Chatgpt热潮,该如何看待呢?英语当中有种说法叫 jump on the bandwagon,意为跟风随大流。60多年前,当信息论的发展进入越来越多的领域,一向低调的香农在《流行潮》(The Bandw…

Linux 游戏性能谁的 更优秀X.Org还是Wayland!

导读X.Org 和 Wayland 是目前 Linux 平台上的两大主流显示服务器,那么两者在 Linux 游戏性能上谁更优秀呢?国外科技媒体 Phoronix 在 Ubuntu 22.10 上对其进行了多款游戏的实测。评测在运行 GNOME 43.1 的 Ubuntu 22.10 上进行测试,在安装英伟…

基于QT5.14.2的MQTT通信

一、概述 默认的Qt环境是不能使用MQTT的,但Qt官方提供了基于MQTT的封装,需要通过源码进行编译。 可以在下面的链接中获取到: https://github.com/qt/qtmqtt 在dev分支中可以选择MQTT版本,选择最新的下载到本地。注意一定要选择对…

Video Speed Controller谷歌视频加速插件——16倍速

文章目录前言最简单的版本一、如果是简单的话 可以Microsoft Edge使用二、简单的版本 火狐的话使用Global Speed插件三、由于视频受限以上的方法行不通 还是谷歌好用前言 主要是网课刷的时候 太慢所以找到了刷视频的方法 由于前几个的权限受限制 所以还是选用了谷歌浏览器的 V…

Ambire Wallet 2023 年路线图

在一个充满活力的建设者空间,但在一个努力的熊市中,作为加密技术创新者,我们必须保持适应,同时继续通过做好工作来领导:建立愿景。 已经建设了很多,也还有很多要做的:Ambire 发布了今年的雷达图…

炎症回路和肠道微生物

✦ ✦ ✦ 炎症:就是平时人们所说的“发炎”,是机体对于刺激的一种防御反应。炎症,可以是感染引起的感染性炎症,也可以不是由于感染引起的非感染性炎症。 炎症在在各种症状中起重要作用,如脑雾、焦虑和抑郁、腹胀、各种…

数据工程师需要具备哪些技能?

成为数据工程师需要具备哪些技能?数据工程工作存在于各个行业,在银行业、医疗保健业、大型科技企业、初创企业和其他行业找到工作机会。许多职位描述要求数据工程师、拥有数学或工程学位,但如果有合适的经验学位往往没那么重要。 大数据开发…

linux高级命令之用户组相关操作

用户组相关操作学习目标能够知道创建用户组的命令1. 创建用户组命令说明groupadd创建(添加)用户组创建用户组效果图:2. 创建用户并指定用户组创建用户并指定用户组效果图:3. 修改用户组修改用户组效果图:4. 删除用户组命令说明groupdel删除用户组删除用户组效果图:说明:如果用户…

Git-学习记录

文章目录1. Git-基础1.1 获取 Git 仓库1.2 记录每次更新到仓库1.3 远程仓库的使用2. Git-分支2.1 Git 分支的新建与合并2.2 Git 分支的管理1. Git-基础 1.1 获取 Git 仓库 通常有两种获取 Git 项目仓库的方式: 将尚未进行版本控制的本地目录转换为 Git 仓库&…

一文解决从进程栈内存底层原理到Segmentation fault报错

栈是编程中使用内存最简单的方式。例如&#xff0c;下面的简单代码中的局部变量 n 就是在堆栈中分配内存的。 #include <stdio.h> void main() {int n 0;printf("0x%x\n",&v); } 那么我有几个问题想问问大家&#xff0c;看看大家对于堆栈内存是否真的了…

maven deploy上传本地jar至私服

1.场景 首先目前依赖包的管理大多数是maven&#xff0c;其次当使用到第三方的包的时候&#xff0c;官方的仓库或者aliyun的maven都是没有这个包的。那么&#xff0c;为了方便我们使用 我们需要将本地的这个jar上传到 公司内部的私服去&#xff0c;以便大家使用 2. 上操作 我…

VS Code 用作嵌入式开发编辑器

使用 Keil MDK 进行嵌入式开发时&#xff0c;Keil 的编辑器相对于主流编辑器而言有些不方便&#xff0c;比如缺少暗色主题、缺少智能悬停感知&#xff08;鼠标停在一个宏上&#xff0c;能自动展开最终的宏结果&#xff09;、代码补全不好用等等&#xff0c;所以推荐使用 VS Cod…

【Java技术】基于Http的文件断点续传实现

1.断点续传的介绍 客户端软件断点续传指的是在下载或上传时&#xff0c;将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分&#xff0c;每一个部分采用一个线程进行上传或下载&#xff0c;如果碰到网络故障&#xff0c;可以从已经上传或下载的部分开始继续上传下载…

电子科技大学操作系统期末复习笔记(二):进程与并发控制

目录 前言 进程管理 进程基本知识 程序的顺序执行 前趋图 程序的并发执行 并发程序 进程的定义和特征 进程的特征和状态 操作系统内核 定义 功能 原语 原子操作的实现 操作系统控制结构 进程控制块PCB 进程组织&#xff08;进程树&#xff09; 进程的创建 …