1、錯誤提示信息如下: com.alibaba.fastjson.JSONException: exepct '[', but string, pos 4, json : "[{"attrId":33,"attrName":"粗跟"},{"attrId":44,"attrName":"厚底"}]" ...
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、後記:
小問題不大,有時候並不能一眼看出來,很是苦惱 ,需要耐心的找原因,當問題解決之後,才恍然大悟。