com.alibaba.fastjson.JSONException: not match : - =

  • 在用@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

    因为担心原作者链接变动,因此自己也保存了一份原内容。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
com.alibaba.fastjson.JSONException是一个由fastjson库引发的JSON解析异常。根据提供的引用内容,这个异常可能是由于语法错误、错误翻译或无法获取javaBeanDeserializer引起的。 根据引用和引用,语法错误可能是由于JSON字符串中缺少了期望的"{"符号,而实际上出现了"["符号。这种情况可能导致fastjson无法正确解析JSON数据。 另一方面,根据引用,错误翻译可能是由于fastjson无法获取javaBeanDeserializer引起的。这种情况可能发生在尝试解析一个字符串为java对象时。 因此,根据提供的引用内容,com.alibaba.fastjson.JSONException可能是由语法错误、错误翻译或无法获取javaBeanDeserializer引起的异常。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [com.alibaba.fastjson.JSONException: syntax error, expect {, actual [, pos 64, fieldName ***, fasjson](https://blog.csdn.net/qq_43227967/article/details/90179364)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [com.alibaba.fastjson.JSONException: can not get javaBeanDeserializer. java.lang.String错误解决](https://blog.csdn.net/wingold_sky/article/details/127843255)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值