簡體   English   中英

復雜對象作為java rest應用程序中的查詢參數

[英]Complex object as a queryparameter in in java rest application

我需要能夠使用具有許多參數的過濾器查詢資源(所有選項)

我的網址規范是這樣的:

GET http://something/version/resource?f={"param1":"1","param2":"something else", "param3":"tomato"

我嘗試了兩種方法:

  1. @XmlRootElement因此我創建了一個類過濾器並使用@XmlRootElement對其進行了注釋,但參數未被解析到我的類中。
@XmlRootElement    
MyClassFilter{
   String param1;
   String param2;
   ..........

}
  1. @BeanParam所以我刪除了@XmlRootElement注釋,我為類中的每個字段添加了@QueryParam注釋,在資源方法中我放了@BeanParam
MyClassFilter{
   @QueryParam("param1")
   String param1;
   @QueryParam("param2")
   String param2;
   ..........

}   

我用這兩種方法得到了null對象。 有人能指出我正確的方向嗎? 我通常使用服務,所以我在服務器端沒有太多經驗。

我解決了我的問題,在我的get方法中,我將過濾器作為字符串接收:

@QueryParam(value = "f") String f

我使用ObjectMapper解析它:

ObjectMapper mapper = new ObjectMapper();
EntityFilter filter = mapper.readValue(f, EntityFilter.class);

您可以使用ParamConverterProvider

@Provider
public class JSONParamConverterProvider implements ParamConverterProvider {

    @Override
    public <T> ParamConverter<T> getConverter(Class<T> rawType, Type genericType, Annotation[] annotations) {
        if(rawType.equals(MyObject.class)){
            return (ParamConverter<T>) new JSONParamConverter();
        }
        return null;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM