泽西REST使用JSON

时间:2017-01-22 05:24:10

标签: json rest jersey-2.0 moxy

我正在尝试将客户端发送的JSON对象用于Map(或JSON对象)。我使用的是Jersey2.22.1,默认情况下它使用的是MOXY。试过HashMap如下图所示,但没有运气。它给出415错误 - "不支持的媒体类型"

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public List<Task> addTask(HashMap<String,Object> dynamicParam){

通过包装Map尝试使用自定义类。再次出现同样的错误。有人可以帮助我,让我知道如何处理地图。

@XmlRootElement
public class DynamicFormData {

Map<Object,Object> data;

public Map<Object, Object> getData() {
    return data;
}

public void setData(Map<Object, Object> data) {
    this.data = data;
}

作为临时解决方案,我使用下面的代码。但是想知道如何使用Map

正确地做到这一点
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public List<Task> addTask(String dynamicParam){     
    log.info("addTask Start");
    Gson gson = new Gson();
    Map<String, Object> map = new HashMap<String, Object>();
    map = (Map<String, Object>)gson.fromJson(dynamicParam, map.getClass());

2 个答案:

答案 0 :(得分:0)

您的客户端未发送Accept: application/json标题。

答案 1 :(得分:0)

<form action="https://differentdomain.com/" id="myform" class="fs-form fs-form-full" autocomplete="off"> <input class="fs-anim-lower" id="q1" type="text" placeholder="aa00" required/> <input class="fs-anim-lower" id="q2" type="text" placeholder="bb00" required/> <button id="submit" class="fs-submit" type="submit">see result</button> </form> @Consumes({MediaType.APPLICATION_FORM_URLENCODED})结合使用 工作范例: JS-客户:

javax.ws.rs.core.MultivaluedMap

新泽西州代码:

function postCalling(){
$.ajax({
    type: 'POST',
    url: "<url>",
    contenttype: "application/json",
    datatype: "json",
    data: {
        'paramOne': 'ONE',
        'paramTwo' : 'TWO'
    },
    success: function (data, status, jqXHR) {
        alert('It worked!: '+JSON.stringify(data));
    },
    error: function (jqXHR, status) {
        alert('didnt work!');

    }
});