【问题标题】:How to pass a Map object to a RestController method?如何将 Map 对象传递给 RestController 方法?
【发布时间】:2021-10-18 15:53:12
【问题描述】:

我的 RestController 中有如下 API 方法

@PostMapping("/asd")
public ResponseEntity<String> asd(@RequestBody MyParams params) { ... }

MyParams 类如下。

public class MyParams implements Serializable {
  public List<Long> ids;
  public List<String> ignoredTypes;
  public Map<String, List<String>> aMapping;
}

在邮递员中,我传递一个 JSON 字符串,如

{
    "ids": [28712, 344248],
    "ignoredTypes": [],
    "aMapping": "{\"Person\":[\"name\",\"age\"],\"Title\":[\"start\",\"end\"]}",
}

我收到一个错误提示

2021-08-16 18:25:53.953 警告 4164 --- [io-8080-exec-10] .w.s.m.s.DefaultHandlerExceptionResolver :已解决 [org.springframework.http.converter.HttpMessageNotReadableException: JSON解析错误:无法构造实例 java.util.LinkedHashMap(尽管至少存在一位创作者):没有 从字符串反序列化的字符串参数构造函数/工厂方法 值('{“人”:[“姓名”,“年龄”],“标题”:[“开始”,“结束”]}');嵌套的 例外是 com.fasterxml.jackson.databind.exc.MismatchedInputException:不能 构造java.util.LinkedHashMap 的实例(尽管至少有一个 Creator 存在):没有字符串参数构造函数/工厂方法 从字符串值反序列化 ('{"Person":["name","age"],"Title":["start","end"]}') 在 [来源: (PushbackInputStream);行:12,列:20](通过参考链: com.xyz.MyParams["aMapping"])]

所以基本上java.util.Map 不能从 JSON 字符串中解析出来。我该怎么做?

【问题讨论】:

  • 你是 aMapping 的 passig 字符串。你必须通过json。

标签: java json spring spring-boot


【解决方案1】:

我更改了请求正文并且它起作用了。

{
  "ids": [
    28712,
    344248
  ],
  "ignoredTypes": [
    
  ],
  "aMapping": {
    "Person": [
      "name",
      "age"
    ],
    "Title": [
      "start",
      "end"
    ]
  }
}

【讨论】:

    【解决方案2】:

    你试过这样吗

    
    {
      "prop1": [1],
      "prop2": ["string"],
      "prop3": {
        "additionalProp1": [
          "string"
        ],
        "additionalProp2": [
          "string"
        ],
        "additionalProp3": [
          "string"
        ]
      }
    }
    

    尝试按原样传递 JSON 对象而不进行字符串化

    【讨论】:

      猜你喜欢
      • 2015-06-01
      • 1970-01-01
      • 2017-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-22
      • 2023-03-09
      相关资源
      最近更新 更多