前台传参:
{}形式的数据,使用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);
本文介绍了在处理前端传递的JSON数据时遇到的一个解析错误,由于JSON数据中多了一层额外的数组导致Fastjson无法正确转换为Java集合。通过分析错误详情,发现数据中存在嵌套的数组结构。为了解决这个问题,使用了Fastjson的`JSONArray.parseArray()`和`getJSONArray()`方法,成功将外层和内层的JSON数组分别转换为Java对象。最终,通过`toJavaList()`方法将内层JSON数组转换为指定类型的Java集合。
1365

被折叠的 条评论
为什么被折叠?



