2016-08-21 78 views
2

收到這是對這個問題的後續問題:JSON對象與空成員

sending nested json object using postman

我試圖JSON對象發送到使用郵差澤西Web服務。

我這樣做是這樣的:

澤西方面:

@Path("/testMethod") 
@POST 
@UnitOfWork 
public short testMethod(@NotNull @BeanParam Test test) 
{ ... } 

測試類是一個簡單的類:

public class Test 
{ 
    public String field; 

    public Test() 
    { 

    } 
} 

郵遞員方面我送一POST消息的Body設置爲raw,內容類型設置爲Json(application/json)。身體本身是:

{ 
"field" : "12" 
} 

當發送該請求,在接收的參數field是空......這是爲什麼?

回答

0

如果您只是想將您的json數據映射到對象,那麼只需刪除@BeanParam,它將正常工作。

但是,如果你想使用@BeanParam功能,您應該刪除從第一個參數的註釋,並添加與@BeanParam標註的第二個參數:

@Path("/testMethod") 
@POST 
@UnitOfWork 
public short testMethod(@NotNull Test test, @BeanParam ExtraTest extraTest) 
{ ... } 

,然後與其他字段映射實現你ExtraTest類:

public class ExtraTest 
{ 
    @HeaderParam("Accept") 
    public String acceptHeader; 

    /* 
    your other header params, path params and so on... 
    ... 
    */ 
} 

@BeanParam是允許您輕鬆訪問其他請求信息(標題字段,查詢參數等)的功能。它不能與你的json數據對象映射混合使用。

的更多信息:

https://abhirockzz.wordpress.com/2014/07/21/new-in-jax-rs-2-0-beanparam-annotation/

https://jersey.java.net/apidocs/2.22/jersey/javax/ws/rs/BeanParam.html

+0

我什麼時候應該接受不BeanParam註釋JSON對象什麼時候應該使用它? –

+0

檢查我編輯的答案。 '@ BeanParam'是一種允許您輕鬆訪問其他請求信息(標題,查詢參數等)的機制。 –