0

私は JAX-RS リソース クラスを持っています。メソッドの 1 つで、このような短いリクエスト用のエンティティ クラスを作成するのではなく、Map<String, String>JSON を表す単純なものをサーバーにバインドしたいと考えています。POST私は次のことができると思いました:

@POST
public Response create(Map<String, String> json) {
    //business logic...
    return Response.created(UriBuilder.fromPath("{id}").build(id)).build();
}

しかし、curl でそのエンドポイントにヒットすると、415 Unsupported Media Type が返されます。このような単純なバインディングを許可する方法はありますか、または実際の注釈付き POJO が必要ですか?

4

1 に答える 1

0

MessageBodyReaderjson を generic に変換する方法をフレームワークに伝えるために独自に記述したくないMap場合でも、 a を受け入れ、StringJackson を使用して次のように読み取ることができます。

@POST
public Response create(String json) {
    Map<String,Object> map = new ObjectMapper().readValue(json, Map.class);
    //business logic...
    return Response.created(UriBuilder.fromPath("{id}").build(id)).build();
}
于 2013-07-26T11:30:42.240 に答える