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、后記:
小問題不大,有時候并不能一眼看出來,很是苦惱 ,需要耐心的找原因,當問題解決之后,才恍然大悟,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/545088.html
標籤:Java
