申请传入的requestbody
{
"content":[{
"id":1,"name":"张三"},{
"id":2,"name":"李四"}]
}
fastjson依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.74</version>
</dependency>
申请RequestBody对象
import lombok.Data;
import com.alibaba.fastjson.JSONArray;
@Data
public class Content {
private JSONArray content;
}
接收代码
@PostMapping(value = "http")
public void HttpJsonReceive(@RequestBody Content content){
JSONArray jsonArray = content.getContent();
if(!CollectionUtils.isEmpty(jsonArray)){
for(Object item : jsonArray){
JSONObject jsonObject = (JSONObject)item;
log.info(jsonObject.toString());
}
}
}
报错:java.util.LinkedHashMap cannot be cast to com.alibaba.fastjson.JSONObject
修复后的代码
@PostMapping(value = "http")
public void HttpJsonReceive(@RequestBody Content content){
JSONArray jsonArray = content.getContent();
if(!CollectionUtils.isEmpty(jsonArray)){
for(Object item : jsonArray){
String s = JSON.toJSONString(item);
log.info(s);
}
}
}
总结:改动的部分仅有循环内的部分,如果不能直接将jsonArray中的内容转化成JSONObject对象,则可以先获取json字符串,再通过字符串转换成JSONObject
@PostMapping(value = "http")
public void HttpJsonReceive(@RequestBody Content content){
JSONArray jsonArray = content.getContent();
if(!CollectionUtils.isEmpty(jsonArray)){
for(Object item : jsonArray){
String s = JSON.toJSONString(item);
JSONObject jsonObject = JSONObject.parseObject(s);
log.info(s);
log.info(jsonObject.toString());
}
}
}
打印结果:
{
"id":1,"name":"张三"}
{
"name":"张三","id":1}
{
"id":2,"name":"李四"}
{
"name":"李四","id":2}