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

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日

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码