Cha*_*had 2 java spring json jackson spring-boot
我们公司正计划将我们的微服务技术切换到 Spring Boot。作为一项倡议,我做了一些高级阅读,并记下了它的潜在影响和语法等价物。我还开始移植我们作为副项目的最小服务。
阻碍我进步的一个问题是试图将我们的 Json 请求/响应交换转换为 Spring Boot。
这是代码的示例:(这是不认识的人的 Nutz 框架)
@POST
@At // These two lines are equivalent to @PostMapping("/create")
@AdaptBy(type=JsonAdapter.class)
public Object create(@Param("param_1") String param1, @Param("param_2) int param2) {
MyModel1 myModel1 = new MyModel1(param1);
MyModel2 myModel2 = new MyModel2(param2);
myRepository1.create(myMode12);
myRepository2.create(myModel2);
return new MyJsonResponse();
}
Run Code Online (Sandbox Code Playgroud)
在 PostMan 或任何其他 REST 客户端上,我只需通过 POST:
{
"param_1" : "test",
"param_2" : 1
}
Run Code Online (Sandbox Code Playgroud)
我在 Spring Boot 中做到了这一点:
@PostMapping("/create")
public Object create(@RequestParam("param_1") String param1, @RequestParam("param_2) int param2) {
MyModel1 myModel1 = new MyModel1(param1);
MyModel2 myModel2 = new MyModel2(param2);
myRepository1.create(myMode12);
myRepository2.create(myModel2);
return new MyJsonResponse();
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何在这里做类似于 JsonAdapter 的事情。Spring 无法识别我传递的数据。
我试过了,但基于它期望 Json 参数是实体形式的示例。
@RequestMapping(path="/wallet", consumes="application/json", produces="application/json")
Run Code Online (Sandbox Code Playgroud)
但我只有在做这样的事情时才能让它工作:
public Object (@RequestBody MyModel1 model1) {}
Run Code Online (Sandbox Code Playgroud)
我的问题是 MyModel1 可能不一定包含我的 json 数据具有的字段/参数。
Nutz 非常有用的一点是,如果我删除了 JsonAdapter,它的行为就像 spring 中的常规表单请求端点。
我在 Stack 中找不到答案,或者如果可能的话,我称它为与现有 Spring 开发人员所称的不同。
我们的老板希望我们(不切实际地)在不强迫前端开发人员适应这些变化的情况下实施这些变化。(自治和所有爵士乐)。如果这是不可避免的,对此的合理解释是什么?
在这种情况下,您可以使用Map类来读取输入 json,例如
@PostMapping("/create")
public Object create(@RequestBody Map<String, ?> input) {
sout(input.get("param1")) // cast to String, int, ..
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9834 次 |
| 最近记录: |