【问题标题】:recieve data as json and process at server side (java spring)以json形式接收数据并在服务器端处理(java spring)
【发布时间】:2018-12-21 00:41:57
【问题描述】:

通过 get 请求将参数发送到服务器(spring 框架),我正在考虑制作所有这些参数的 json 对象并发送 get 请求,以便在 java spring 中我可以在控制器类中作为映射接收春天,如何实现这一点 我是春天的新手,请帮帮我

到目前为止,我尝试单独发送这些参数,例如 (pram1,param2,param3,param4) 并在服务器端作为字符串接收,方法是将参数设置为类型脚本中的字符串,然后再向服务器发出获取请求->我在控制器中将参数作为映射接收 但我认为这不是最好的方法

{
 param1: "param1"
 param2: "param2
 paramn: "paramn"
} 

将以上内容发送到控制器类中的服务器↓

@RequestParam MultiValueMap<String, String> requestMap

我想接收参数为

String param1=  requestMap.get("param1");
String param2=requestMap.get("param2");

如果地图类型是一个对象,那就太好了,这样我就可以接收任何类型的对象 例子 在客户端我发送{param1: "myName", id: 0001} 在服务器端requestMap.get("param1"); requestMap.get("id");

【问题讨论】:

  • 阅读 Spring 入门指南。特别是无需手动提取参数;定义一个 DTO/Request 类,Spring 会自动映射它。
  • 如果将来我想添加更多参数,那么我可能还需要在 Dto 中添加字段,但我不想这样做......我可以不映射任何类型在不使用 dto 类的情况下映射的参数

标签: spring spring-mvc jackson


【解决方案1】:

正如 chrylis 所建议的,无需手动提取参数,您可以定义 DTO/Request/POJO 类,Spring 会自动映射它。

public class SampleDTO{
   private String param1;
   private String param2;
   .
   .
   //getters and setters
}

【讨论】:

  • 感谢您的解决方案,是的,这是一种解决方案,但我并不是为了参数而尝试制作 dto。
【解决方案2】:

如果您将 RequestParam 指定为 hashmap,它会由 jackson 自动从 json 转换。或者,如果您使用 String 作为参数,则可以使用 ObjectMapper 将其转换为 Map 并从中获取值。

【讨论】:

  • 哇,我想试试这个……如果我得到预期的结果,我会回来的。谢谢你
【解决方案3】:

您可以像这样将传入的json 映射到Hashmap

@RequestMapping(method = RequestMethod.GET)
public String yourMethod(@RequestParam Map<String, String> parameters) {   

    String name = parameters.get("A"); //If your URL is http://test.com?A=ABC
    ...

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    相关资源
    最近更新 更多