错误提示“com.alibaba.fastjson.JSONException: exepct '[', but string, pos 4, json”解决

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(
s, AttributeServiceImpl.AttrValue.class);

 

作用:就是把从数据库中取出来的json字符串解析成List对象。

3、问题分析:

1)网上有说使用: JSON.toJSON(s).toString() 转化一下,于是修改 

JSON.parseArray(
    JSON.toJSON(s).toString(), AttributeServiceImpl.AttrValue.class);

    发现还是报错。

2)直接定义变量试一下:

String s="[{\"attrId\":33,\"attrName\":\"粗跟\"},{\"attrId\":44,\"attrName\":\"厚底\"}]"
JSON.parseArray(
    JSON.toJSON(s).toString(), AttributeServiceImpl.AttrValue.class);

     发现没有问题,可以运行,那就奇怪了。

3)于是仔细看数据库表中的数据:

     终于发现问题,这个json字符串的前后,分别多了一个双引号

    

 

    于是把前后双引号去掉之后,再进行解析,问题解决。

4、后记:

     小问题不大,有时候并不能一眼看出来,很是苦恼 ,需要耐心的找原因,当问题解决之后,才恍然大悟。

posted @ 2023-02-26 17:36  strong  阅读(970)  评论(0编辑  收藏  举报