gpt4 book ai didi

java - 使用 Spring 获取 RESTful Web 服务来理解 JSON 字符串

转载 作者:行者123 更新时间:2023-12-02 05:54:36 24 4
gpt4 key购买 nike

我对使用 Spring 以及涉及的所有事情都很陌生,但我正在努力解决这个问题。

我正在尝试使用 Spring MVN 和 Gradle 来创建一个服务来理解 JSON 格式的字符串。这一切都是用 Java 制作的。但我根本无法让它正常工作。

这个

@RequestMapping(value = "/toggle")
public @ResponseBody String sendCommand(@RequestParam(value="IP") String IP){
//body
}

是我的 Controller 中的一个方法,但是,当我发送以下 JSON 格式的字符串时

{"IP":"192.168.1.9"}

我仍然收到响应代码 400。

我尝试了不同的变体,其中一个示例使用 @RequestBody,并使用自己的 indata 类。另一个地方是我接收 HttpEntity,以观察字符串是否被正确接收。虽然正确接收了字符串,但我无法让我的代码“读取”它。

我可以访问 localhost:8080/toggle,并通过 HTTP 设置变量,例如:

http://localhost:8080/toggle?IP=192.168.1.9

有效。

您建议在哪里继续进行故障排除?提前致谢!

<小时/>

编辑:哇。非常感谢您的快速回复,我原以为一两天没有回复,结果在几分钟内就得到了您的帮助。我知道这个网站很好,但你也很棒,谢谢!

也就是说,我创建了一个名为 Ident 的新类,它只有一个私有(private) String 变量,带有构造函数、setter 和 getter。现在我有了

@RequestMapping(value = "/toggle")
public @ResponseBody String sendCommand(@RequestBody Ident ident) {
//body
}

尽管如此,我仍然收到 400 发送相同字符串的消息。

虽然它可以使用 @PathVariable 工作,但我想让它工作,因为现在我只是在尝试它。稍后它将用于发送不仅仅是 IP 的内容。

我正在使用 @ComponentScan @EnableAutoConfiguration在主文件中,这可能与设置错误有关吗?

最佳答案

您正在混合不同的东西(请求参数和 json 对象)。

为了捕获已发布的{"IP":"192.168.1.9"},您需要执行以下操作:

@RequestMapping(value = "/toggle")
public @ResponseBody String sendCommand(@RequestBody String json){
final YourObject yourObject = mapJsonToObject(json);
final String ip = yourObject.getIp();
//body
}

您还需要创建一个与 json 相对应的类,并将该 json 映射到该类(使用 jackson 等库)。

如果您想放弃创建中间对象(我不建议您这样做,因为它会使代码更清晰),您可以使用标准 JDK 方法从 json 字符串中提取 IP

关于java - 使用 Spring 获取 RESTful Web 服务来理解 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23219344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com