Horse_Ancheng 2022-04-30 01:40 采纳率: 100%
浏览 222
已结题

springboot 接收复杂的json数据

Springboot接受json数据
问题相关代码

```json数据
[{"q_type":"01","q_must":"1","q_name":"这是名字1","q_option":"[\"2\",\"3\"]","t_id":10017,"t_uid":1},
{"q_type":"02","q_must":"1","q_name":"这是名字2","q_option":"[\"5\",\"6\"]","t_id":10017,"t_uid":1},
{"q_type":"03","q_must":"1","q_name":"这是名字3","q_option":"[]","t_id":10017,"t_uid":1}]
    @CrossOrigin
    @PostMapping("api/newQuestion")
    @ResponseBody //新建问卷
    public JSONObject getJsonVal(@RequestBody JSONObject data) throws IOException {
    JSONObject json = new JSONObject();

//***************************
//只想知道这里怎样获取q_type、q_must、q_name、数组q_option、t_id、t_uid
//***************************

//返回操作结果
        if (flag)
            json.put("msg","success");
        else
            json.put("msg","fail");

        return json;
}

###### 运行结果及报错内容 
2022-04-30 01:18:28.161  WARN 19884 --- [nio-8081-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver :
 Resolved [org.springframework.http.converter.HttpMessageNotReadableException: 
JSON parse error: Cannot deserialize instance of `com.alibaba.fastjson.JSONObject<java.lang.String,java.lang.Object>`
 out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: 
Cannot deserialize instance of `com.alibaba.fastjson.JSONObject<java.lang.String,java.lang.Object>` 
out of START_ARRAY token
 at [Source: (PushbackInputStream); line: 1, column: 2]]
  • 写回答

1条回答 默认 最新

  • Roc-xb 后端领域优质创作者 2022-04-30 03:17
    关注

    定义一个实体类

    package com.example.demo.web;
    
    import lombok.Data;
    import lombok.ToString;
    
    @Data
    @ToString
    public class RequestData {
    
        private String q_type;
        private String q_must;
        private String q_name;
        private String q_option;
        private int t_id;
        private int t_uid;
    
    }
    

    MainController.java

    package com.example.demo.web;
    
    import com.alibaba.fastjson.JSONObject;
    import org.springframework.web.bind.annotation.*;
    
    import java.io.IOException;
    import java.util.List;
    
    @RestController
    @RequestMapping("/api")
    public class MainController {
    
        @CrossOrigin
        @PostMapping("/newQuestion")
        @ResponseBody //新建问卷
        public JSONObject getJsonVal(@RequestBody List<RequestData> data) throws IOException {
            JSONObject json = new JSONObject();
            System.out.println("data = " + data);
    //***************************
    //只想知道这里怎样获取q_type、q_must、q_name、数组q_option、t_id、t_uid
    //***************************
    
    //返回操作结果
            if (true)
                json.put("msg", "success");
            else
                json.put("msg", "fail");
    
            return json;
        }
    
    }
    
    
    

    postman 请求

    img

    接受到参数

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月8日
  • 已采纳回答 4月30日
  • 创建了问题 4月30日

悬赏问题

  • ¥15 opencv 无法读取视频
  • ¥15 用matlab 实现通信仿真
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图