簡體   English   中英

將JSON參數發布到REST服務時出錯

[英]Error posting json parameter to REST service

我正在嘗試將對象發布到使用Spring MVC實現的RESTful服務中,但是它不起作用。

在我的測試頁中,我有:

var obj = { tobj: {id: 1, desc: 'yesh'}};
$.ajax({
    url : 'http://localhost:8180/CanvassService/canvass/test',
    type : 'POST',
    data : JSON.stringify(obj),
    contentType : 'application/json; charset=utf-8',
    dataType : 'json',
    async : false,
    success : function(msg) {
        alert(msg);
    }
});

我正在使用json2.js來對我的對象進行字符串化。

在我的控制器中,我有:

@RequestMapping(value="/canvass/test", method = RequestMethod.POST)
public void createTest(@RequestParam TestObj tobj)
        throws ServiceOperationException {
    // test method
    int i = 0;
    System.out.println(i);
}

我的實體類是:

public class TestObj {

    private int id;
    private String desc;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

}

當我將對象發布到控制器時,出現HTTP 400錯誤:

HTTP狀態400-所需的TestObj參數'tobj'不存在

我做錯了什么? 似乎我發送的參數/對象的格式不正確,但是我不明白為什么...

您正在使用JSON數據進行POST,而在您的控制器中嘗試將其解釋為參數(即?tobj=someValue )。

嘗試使用以下方法:

@RequestMapping(value="/canvass/test", method = RequestMethod.POST)
public void createTest(@RequestBody TestObj tobj) 
        throws ServiceOperationException {
    // test method
    int i = 0;
    System.out.println(i);
}

此外,您不必嵌套JSON數據:

所以{id: 1, desc: 'yesh'}而不是{ tobj: {id: 1, desc: 'yesh'}}

在水下使用Jackons時,這應該起作用。

暫無
暫無

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

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