使用FastJSON转换成list的问题

博客讲述了在使用FastJSON进行数据转换时遇到的错误。错误源于尝试将一个对象的toString结果解析为JSON,导致格式不匹配。正确做法是先将对象转换为JSONArray,然后使用JSON.toJSONString()方法将其转化为合法的JSON格式字符串,再进行解析。文章提供了错误示例和修正后的代码,强调了理解对象转换和JSON格式的重要性。

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

在使用FastJSON,使用如下代码:

List<SignEndorseDTO> endorseComs = JSONObject.parseArray(draftDetail.getString("endorse_coms"), SignEndorseDTO.class);

则会出现如下错误:

Exception in thread "main" com.alibaba.fastjson.JSONException:not match : - =, info : pos 13, line 1, column 14[ {endorseDate=2021-12-24, endorseName=临xxx有限公司, endorseeName=费xxx有限公司, isTransfer=aa, title=aaa}]

为什么出现这个错误呢?

原始是FastJSON的getString()引起的。getString()实际是object.toString,导致格式无法解析导致转换错误

{endorseDate=2021-12-24, endorseName=临xxx有限公司, endorseeName=费xxx有限公司, isTransfer=可aa, title=转bb}

而正确的转换格式:

{"id":"66","firmware_id":"15","version":"V20190617_170943","file_hash":"c9782aeff870c229f4a9d3efbaa11fa7","file_size":"511020","description":"测试","product_id":"8"}

所以,正确的使用方式:

JSONArray detailJSONArray = draftDetail.getJSONArray("endorse_coms");
List<SignEndorseDTO> endorseComs = JSONObject.parseArray(JSONObject.toJSONString(detailJSONArray), SignEndorseDTO.class);

至于object.toString为什么会转换成

{endorseDate=2021-12-24, endorseName=临xxx有限公司, endorseeName=费xxx有限公司, isTransfer=可aa, title=转bb}

可以看一下对象重写后的toString

讲清楚为什么,才会明白为什么要这么做。

若有错误的地方,请与指正,欢迎讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值