如何自动将String @RequestBody解析为json

rid*_*ddy 8 java rest spring jackson spring-boot

我有一个端点,应该读取一个字符串值作为正文.

@RestController
public class EndpointsController {
   @RequestMapping( method = RequestMethod.PUT, value = "api/{myId}/name", consumes= MediaType.APPLICATION_JSON )
   public String updateName( @PathVariable( MY_ID ) String myId, @RequestBody String name) {

     //will be: "new name"
     //instead of : newname
     return myId;
   }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,客户端将使用"新名称"调用它,这是正确的恕我直言,但服务器用引号读取它,因为它不处理字符串作为json对象.我怎么能告诉杰克逊解析字符串(与Pojos相同)?

Sot*_*lis 14

如果您使用Jackson作为JSON解析器,则只需使用类型声明参数即可TextNode.这是表示JSON字符串的Jackson类型.

public String updateName(@PathVariable(MY_ID) String myId, @RequestBody TextNode name) {
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用其asText方法来检索其文本值.

  • @baraka请澄清您的评论与此答案的关系.什么API?怎么坏了?什么服务?我/何时建议修改所有这些?全球配置是什么?我真的不明白你的评论. (3认同)