##异常详情:com.alibaba.fastjson.JSONException: syntax error, expect {, actual string, pos 0, fastjson-version 1.2.70
原因:返回应该是List<Object>类型的数据,在使用JSON.parseObject()转换时,返回的是实体类型。
//定义返回类型
List<ShareResponseVO> shareResponseVOS = null;
//需要转换的数据,格式:[
{
"title": "标题1",
"newbornName": "XX",
"gender": "X",
"creator": "",
"time": "XXXX",
"gestation": "XX",
"weight": "XXXX",
"height": "XXXX",
"place": "XXXX",
"effectiveTime": "2000-11-16",
"documentId": "R3205854958",
"contentType": "",
"PDF": "upload/20210506/08856328f6of453435b2f389b9b796f.pdf"
},{
"title": "标题2",
"newbornName": "XX",
"gender": "X",
"creator": "",
"time": "XXXX",
"gestation": "XX",
"weight": "XXXX",
"height": "XXXX",
"place": "XXXX",
"effectiveTime": "2000-11-16",
"documentId": "R3205854958",
"contentType": "",
"PDF": "upload/20210506/05656328f6of453435b2f389b9yttr67.pdf"
},
]
String sJson= “XXXXXXXXXXXX”;
//使用JSON.parseObject转换,返回的是实体类型,与定义的返回类型不一致,所以出现错误。(重点!重点!重点!)
//shareResponseVOS = JSON.parseObject(sJson, ShareResponseVO.class);
上面例子就是出现错误的原因(代码最后一行)。正确的转换如下:
//定义返回类型
List<ShareResponseVO> shareResponseVOS = null;
//需要转换的字符串
String sJson= “XXXXXXXXXXXX”;
//原因就在于使用JSON.psrseObject返回的是实体类型,应该使用JSON.parseArray返回List。(重点!重点!重点!)
shareResponseVOS = JSON.parseArray(sJson, ShareResponseVO.class);
附:如果需要转换的数据带有转义符,导致转换异常
//定义返回类型
List<ShareResponseVO> shareResponseVOS = null;
//需要转换的数据,格式:[
{
\"title\":\ "标题1\",
\"newbornName\": \"XX\",
\"gender\": \"X\",
\"creator\": \"\",
\"birthTime\": \"XXXX\",
\"gestation\": \"XX\",
\"weight\": \"XXXX\",
\"height\": \"XXXX\",
\"birthPlace\": \"XXXX\",
\"effectiveTime\": \"2000-11-16\",
\"documentId\": \"R3205854958\",
\"contentType\": \"\",
\"PDF\": \"upload/20210506/08856328f6of453435b2f389b9b796f.pdf\"
},{
\"title\":\ "标题2\",
\"newbornName\": \"XX\",
\"gender\": \"X\",
\"creator\": \"\",
\"birthTime\": \"XXXX\",
\"gestation\": \"XX\",
\"weight\": \"XXXX\",
\"height\": \"XXXX\",
\"birthPlace\": \"XXXX\",
\"effectiveTime\": \"2000-11-16\",
\"documentId\": \"R3205854958\",
\"contentType\": \"\",
\"PDF\": \"upload/20210506/08856328f6of453435b2f389b9b796f.pdf\"
}
]
String sJson= “XXXXXXXXXXXX”;
/**
* 按照以下两行代码处理下,就可以正常转换了(重点!重点!重点!)
*/
Object parse = JSONObject.parse(sJson);
String sJsonOne = parse.toString();
//使用JSON.parseArray返回List。
shareResponseVOS = JSON.parseArray(sJsonOne , ShareResponseVO.class);
一定要注意标记(重点!重点!重点!)的地方。
看完之后如果对您有帮助,感谢点赞支持!