-
在用@RequestBody注解进行参数传递时,偶尔会出现以上的异常,一般出现在JSON字符串转为对象。
错误信息例子:
com.alibaba.fastjson.JSONException: not match : - =, info : pos 3, line 1, column 4{id=66, firmware_id=15, version=V20190617_170943, file_hash=c9782aeff870c229f4a9d3efbaa11fa7, file_size=511020, description=测试, product_id=8}
-
错误代码举例:
//使用JSONObject进行了数据库接收 String test1(@RequestBody JSONObject jsonObject){ String versionInfoStr = jsonObject.getString("versionInfo"); VersionInfo versionInfo = JSONObject.parseObject(versionInfoStr, VersionInfo.class); return null; }
-
正确代码举例:
//改成String接收的就不会出现错误 String test2(@RequestBody String str){ //这一步是为了把str的转义字符去掉,也可以不调这个方法 String jsonStr = StringEscapeUtils.unescapeJavaScript(str); JSONObject jsonObject = JSONObject.parseObject(jsonStr); String versionInfoStr = jsonObject.getString("versionInfo"); VersionInfo versionInfo = JSONObject.parseObject(versionInfoStr, VersionInfo.class); return null; }
-
主要的问题就出现在getString这句代码
错误代码中getString得到的值为 {id=66, firmware_id=15, version=V20190617_170943, file_hash=c9782aeff870c229f4a9d3efbaa11fa7, file_size=511020, description=测试, product_id=8} 而正确代码中得到的是 {"id":"66","firmware_id":"15","version":"V20190617_170943","file_hash":"c9782aeff870c229f4a9d3efbaa11fa7","file_size":"511020","description":"测试","product_id":"8"}
可以看出前者省去了双引号,不是一个正确的JSON字符串,这才导致转换成对象出现异常。
-
内容转载于https://blog.csdn.net/qq_34354257/article/details/93466851
因为担心原作者链接变动,因此自己也保存了一份原内容。
com.alibaba.fastjson.JSONException: not match : - =
最新推荐文章于 2024-05-11 21:34:29 发布