1、错误提示信息如下:
com.alibaba.fastjson.JSONException: exepct '[', but string, pos 4, json : "[{"attrId":33,"attrName":"粗跟"},{"attrId":44,"attrName":"厚底"}]"
at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:672)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:662)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:657)
at com.alibaba.fastjson.JSON.parseArray(JSON.java:514)
2、原始代码:- List<AttributeServiceImpl.AttrValue> attrValues = JSON.parseArray(<br> s, AttributeServiceImpl.AttrValue.class);
复制代码
作用:就是把从数据库中取出来的json字符串解析成List对象。
3、问题分析:
1)网上有说使用: JSON.toJSON(s).toString() 转化一下,于是修改 - JSON.parseArray(
- JSON.toJSON(s).toString(), AttributeServiceImpl.AttrValue.class);
复制代码- [/code] 发现还是报错。
- 2)直接定义变量试一下:
- [code]String s="[{"attrId":33,"attrName":"粗跟"},{"attrId":44,"attrName":"厚底"}]"JSON.parseArray(
- JSON.toJSON(s).toString(), AttributeServiceImpl.AttrValue.class);
复制代码 发现没有问题,可以运行,那就奇怪了。
3)于是仔细看数据库表中的数据:
终于发现问题,这个json字符串的前后,分别多了一个双引号
于是把前后双引号去掉之后,再进行解析,问题解决。
4、后记:
小问题不大,有时候并不能一眼看出来,很是苦恼 ,需要耐心的找原因,当问题解决之后,才恍然大悟。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |