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

博主在进行Java中JSON字符串转对象操作时失败,特此记录。文中给出错误信息、错误代码和正确代码,指出问题出在getString代码处,因省去双引号,非正确JSON字符串,导致转换对象异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

       今日在做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 test20190624_02(@RequestBody String str){
    JSONObject jsonObject = JSONObject.parseObject(str);
    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字符串,这才导致转换成对象出现异常。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值