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

Spring启动,在序列化之前输出json http requestbody

斜淳
2023-03-14

当收到http请求时,Spring boot将执行以下步骤。

1.首先读取json http requestbody

2.然后将其反序列化为@RequestBody对象。

//Json数据映射器

ObjectMapper mapper=新的ObjectMapper();

制图员。writeValueAsString(请求)

我可以使用ObjectMapper输出json正文,但如果我可以在json正文反序列化为object之前直接输出json正文,那么效果会更好。

在spring boot将json请求体反序列化为对象之前,是否可以输出json请求体?

共有3个答案

郑翰海
2023-03-14
@RequestMapping(value = "/...", method = RequestMethod.POST)
public Bar getBar(@Valid @RequestBody String jsonBody){
    System.out.println("data:" + jsonBody);
}

public class BarRequestEntity{

    // AuthenticationKey
    @NotBlank(message = "id {error.empty}")
    private String id;
}

我正在使用@Valid检查请求参数。

海叶秋
2023-03-14

如果要将JSON作为字符串对象,

@RequestMapping("/...")
public Bar findBar(@RequestBody("json") String json) {
    // ...
}

上面的代码片段将为您提供JSON字符串作为输出。现在,如果您想将其转换为对象,则可以使用

ObjectMapper mapper = new ObjectMapper();
吴安和
2023-03-14

而不是使用这个:

@RequestMapping("/...")
public Bar findBar(@RequestBody Foo foo) {
    // ...
}

您可以这样做:

@RequestMapping("/...")
public Bar findBar(Reader reader) {
    String json = reader.read..( );
    Foo foo = objectMapper.read( ... );
}

但我认为没有办法同时获得反序列化对象和原始响应。不过我可能错了。

 类似资料:
  • 我有一个API,它正在被扩展,以供另一个系统使用。存在Pre-req,每个前端对一个json字段有不同的期望。 示例:响应字段“amount”必须是字符串或int,这取决于我从下游接收的值。因此,在某些情况下,我将在json中返回字符串值,而在其他情况下,我将返回int。 预期的json产出: 或 我已经做了以下工作: 我希望能够为json字段“amount”返回int或String值,但出现以下

  • 我想在play应用程序(使用slick)启动之前,从docker compose文件(postgres和kafka实例)启动testcontainers。我想要这个,这样我就可以写一个端到端的测试。我似乎不明白这是怎么可能的。 Scala版本2.12.10 Testcontainer版本0.35.0 Play slick版本5.0.0 当我在没有“TestFunSpec”的情况下执行测试时,doc

  • 使用以下命令启动Appium服务器:C:\Program Files(x86)\Appium\node.exelib\server\main.js-地址127.0.0.1-端口4723-平台名称Android-平台-版本23-自动化-名称Appium-日志-无颜色info:欢迎来到Appium v1.4.16(REV ae6877eff263066b26328d457bd285c0cc62430d

  • 我有一个场景,我试图在Cordova的deviceready事件上初始化我的应用程序。现在,这个初始化序列需要几秒钟的时间来执行。这导致总发射时间远大于预期。我的问题是,是否可以简单地与即将推出的Cordova API和插件并行运行此初始化序列? 注意:初始化没有利用API或插件中的任何内容,所以我不能简单地在加载时立即运行它,而不是在onDeviceReady上运行它吗?

  • 问题内容: 有没有办法强迫杰克逊不将类名放在Json输出中?我问了一个问题,导致这个问题,但我要问什么,我希望是一个更集中的问题。我在执行此操作时正在使用Spring MVC,但是我不确定这有多重要。 所以,代替 我想要 我可能更喜欢前者,但是我不知道如何在反序列化时让Jackson识别类名,所以如果有人知道,那也会有所帮助。 问题答案: 感谢http://pascaldimassimo.com/

  • 我正在尝试使用简单的spring启动应用程序。我在ApplicationContext上启动应用程序时遇到问题。 2017-04-26 11:17:31.101警告14528---[main]s.c.a.AnnotationConfigApplicationContext:上下文初始化期间遇到异常-取消刷新尝试:org。springframework。豆。工厂未满足的PendencyExcepti