web-dev-qa-db-ja.com

文字列@RequestBodyをjsonとして自動的に解析する方法

文字列値を本文として読み取るエンドポイントがあります。

@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;
   }
}

私の問題は、クライアントがこれを正しいIMHOである「新しい名前」で呼び出すことですが、サーバーは文字列をjsonオブジェクトとして処理しないため、引用符でこれを読み取ります。 Jacksonに文字列も解析するように指示するにはどうすればよいですか(Pojoの場合と同じ方法)。

10
riddy

JSONパーサーとしてJacksonを使用している場合は、型を TextNode でパラメーターを宣言するだけです。これは、JSON文字列を表すJackson型です。

public String updateName(@PathVariable(MY_ID) String myId, @RequestBody TextNode name) {

次に、その asText メソッドを使用して、テキスト値を取得できます。

14