当前位置: 首页 > 知识库问答 >
问题:

如何将映射对象传递给RestController方法?

秦才
2023-03-14

我的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;
}

在postman中,我传递了一个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的实例(尽管至少存在一个Creator):没有字符串参数构造函数/工厂方法从字符串值反序列化('{"Person":["name","age"],"Title":["start","end"]}'); 嵌套异常是com.fasterxml.jackson.databind.exc.MismatchedInputException:无法构建java.util.LinkedHashMap的实例(尽管至少存在一个Creator):没有字符串参数构造函数/工厂方法从字符串值反序列化('{"Person":["name","age"],"Title":["start","end"]}')在[Source:(PushbackInputStream); line: 12, line: 20](通过引用链:com.xyz.MyParams["aMap"])]

所以基本上是java。util。无法从JSON字符串解析映射。我该怎么做?

共有2个答案

夏侯和韵
2023-03-14

我更改了请求主体,它成功了。

{
  "ids": [
    28712,
    344248
  ],
  "ignoredTypes": [
    
  ],
  "aMapping": {
    "Person": [
      "name",
      "age"
    ],
    "Title": [
      "start",
      "end"
    ]
  }
}
东郭自强
2023-03-14

你试过这样吗


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

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

 类似资料:
  • 是否有一种方法可以将封闭的对象引用作为参数传递给映射方法? 在自定义方法中映射person对象时,我需要一个对包围的car对象的引用。

  • 我在示例中看到如何将消息字符串传递给亚马逊 sns sdk 的发布方法。但是,是否有如何将自定义对象作为消息传递的示例?我尝试将“消息结构”设置为“json”,但随后我得到错误。我应该将对象值传递到参数中的哪个位置? 有什么例子吗?

  • 我想将URL放在GET Request中,这样我就可以将用户重定向到给定的URL。 这是我到目前为止的代码: 示例url我用来获取-http://localhost:8080/app/controller/redirectionTest/1234/http://localhost:3000/main 所以当我调用GET方法时,我想运行一些代码,然后被重定向到http://localhost:300

  • 我无法从列表映射器(字符串公司)向对象映射器传递一些公共参数 起初,我使用的是接口而不是抽象类。而且没有@AfterMapping方法。事实上,我不知道如何正确地将其作为String公司@Context传递。有没有@Context和@AfterMapping,或者至少有它,所以我的问题是,当列表映射器getEmployeeFromDTO按顺序调用“item”mapper getEmployeeFr

  • 我正在使用GraphQL查询一个对象,该对象将由大约15个不同的REST调用组成。这是我的根查询,我在其中传入查询的ID。这对于正确解析的主要student对象非常有效。但是,我需要弄清楚如何将ID传递给地址解析程序。我尝试将args添加到address对象,但出现了一个错误,表明args没有从Student对象传递下来。所以我的问题是:如何将客户机查询中的参数传递给GraphQL服务器中的子对象

  • 问题内容: 我在php中有对象,每个对象代表一个“项目”以及与之相关的所有信息。 当用户浏览页面时,这些对象应传递给javascript。理想情况下,镜像相同的结构,因此我可以使用Raphael在我的网站上将每个项目及其信息显示为单独的形状。 但是,如何将对象从php转换为javascript? 问题答案: 您可以将PHP对象转换为数组,然后使用JSON函数对其进行编码。之后,从JavaScrip