前台传参:
{}形式的数据,使用parseObject,--->json转Java对象
[]形式的数据,使用parseArray,--->json转Java集合
今天遇到了个坑, 我的需求是将json集合转变成java集合, 前台明明传递的是[]形式的json集合, 后台解密后无论如何转换都报错,
异常详情:com.alibaba.fastjson.JSONException: syntax error, expect {, actual string, pos 0, fastjson-version 1.2.70
找了半天发现是:多了一个[ ],这样导致数据中嵌套数据, 后台格式解析不出来
错误示范如图所示
[
[
{
"app_id":"XXXXX",
"is_encrypt":"true",
"distinct_id":"C01A58F3-EFD7-B6A2-9A3F-86B77A13D3F6",
"user_id":"",
"op_time":"2021-02-01 17:15:3",
"event":"home_page",
"properties":{
"os":"ios",
"os_version":"12.4",
"app_version":"3.4.2",
"ext":[
]
}
},
{
"app_id":"XXXXXX",
"is_encrypt":"true",
"distinct_id":"C01A58F3-EFD7-B6A2-9A3F-86B77A13D3F6",
"user_id":"",
"op_time":"2021-02-01 17:15:16",
"event":"service_home_page",
"properties":{
"os":"ios",
"os_version":"12.4",
"app_version":"3.4.2",
"ext":[
]
}
}
]
]
fastjson解决方法
//decrpt为解密出来的json字符串, 如上图所示
JSONArray jsonArray = JSONArray.parseArray(decrypt);
//获取索引为0的json字符串集合
JSONArray jsonArray1 = jsonArray.getJSONArray(0);
List<UserDetailInfoDTO> userDetailInfoDTOS =jsonArray1.toJavaList(UserDetailInfoDTO.class);