我想在有效负载中发送一个字符串,如下所示:
{
"value":"myvalue"
}
在我的方法中,我将收到一个String值,而不是一个对象。
是否可以重新使用“myvalue”,没有映射?
谢谢!
答案 0 :(得分:2)
使用JSON Processing API。类似的东西:
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response postJson(String json) {
String value = null;
try (JsonReader reader = Json.createReader(new StringReader(json))) {
JsonObject object = reader.readObject();
JsonValue jsonValue = object.get("value");
value = jsonValue.toString();
System.out.println(value);
}
return Response.created(newUri).build();
}
创建一个模型类,让JAX-RS框架为您处理绑定。它会将Json读入您的对象并将其写回Json
@XmlRootElement
public class Demo {
// Should be same same as key (or we need annotations)
private String value;
public String getValue() { return value; }
public void setValue(String value) {this.value = value;}
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response postJson(Demo demo) {
System.out.println(demo.getValue());
return Response.created(newUri).build();
}
看看你的评论,你说你想要只是一个字段。通常,您获取一个表示,并将整个表示返回给服务器。但如果这太麻烦(即大型表示),您可能需要查看PATCH。虽然JAX-RS没有直接支持,但我们可以创建自己的Http方法注释
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@HttpMethod("PATCH")
public @interface PATCH{}
只需使用此方法为您的资源方法注释,您就可以通过PATCH方法发送请求。客户端API请求示例可能类似于
client.target(location).request().method("PATCH",Entity.xml(patchObject));