2013-11-28 78 views
1

我在Java中使用Jersey。我想要通過發佈請求發送JSON數據。但是,我不知道如何做到這一點,儘管我的搜索。我能夠在一條路徑上接收JSON數據,但我無法弄清楚如何將它解析爲java變量。我認爲我需要使用傑克遜來做到這一點。但是,我不明白如何將接收到的JSON傳遞給傑克遜。用Jersey和Jackson過程JSON

@Path("/register") 
public class ResourceRegister 
{ 
    @POST 
    @Consumes(MediaType.APPLICATION_JSON) 
    public String RegisterUser(//not sure what to take in here to get the json) 
    { 
     //code to deal with the json 
    } 
+0

你怎麼形成請求?你有沒有在你想要傳遞給你的服務的UI端獲得json字符串? –

+0

正確。用戶正在從ui發送信息,這些信息將作爲json發送。我想在服務中收到此json。 – User093203920

回答

1

您只需將@JsonProperty註釋放置到您的類屬性中,並將該類添加到您的Resource方法中作爲參數。

您可能需要@JsonIgnoreProperties註釋,以及如果你沒有傳入的JSON反序列化裏面的一切

見下文:

@POST 
@Consumes(MediaType.APPLICATION_JSON) 
public String registerUser(MyUser myUser) 
{ 
    //code to deal with the json 
} 


public class MyUser{ 
    @JsonProperty 
    private String name; 
    @JsonProperty 
    private String surname; 

//getters & setters & constructors if you need 
} 
2

有接受JSON和在後臺使用它的幾種方法結束。 1.使用JAXB API設置POJO元素並使用該POJO類的對象來訪問傳遞的參數。這對JSON大小很有幫助。 例子: 服務宣言將是如下

@Path("/register") 
public class ResourceRegister 
{ 
    @POST 
    @Consumes(MediaType.APPLICATION_JSON) 
    public String RegisterUser(RegParams regParams) 
    { 
     //code to deal with the json 
    } 
..... 
} 

,你會寫一個POJO像下面

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
@JsonIgnoreProperties(ignoreUnknown=true) 
@JsonWriteNullProperties(false) 
public class RegParams implements Serializable { 

    @JsonProperty("userId") 
    private long userId; 

    @JsonProperty("userName") 
    private String userName; 
.. 
.. 
} 
  1. retrive JSON作爲一個字符串,並使用球衣的API使用相同的工作。 在這種情況下,你可以如下

    @Path("/register") 
    public class ResourceRegister 
    { 
        @POST 
        @Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
        public String RegisterUser(@FormParam("jsonObj")String jsonString) 
        { 
         //code to deal with the json 
        } 
    ..... 
    } 
    

聲明爲您服務,您可以通過球衣的API處理該字符串如以下

ObjectMapper om = new ObjectMapper(); 
JsonNode mainNode = om.readTree(jsonString); 
//access fields 
mainNode.get..(as per data passed, string, int etc) 

更多的全球化志願服務青年,你可以參考thisthis

相關問題