2014-02-26 303 views
5

中的myController的方法是這樣的客戶端發送請求是語法不正確發送POST請求

@RequestMapping(value="/{processId}/dependents", method=RequestMethod.POST,consumes="application/json") 
@ResponseBody 
public Dependents postdependent(@ModelAttribute ProcessContext process,@RequestBody Dependent dependent) { 
    return process.getDependents().addDependent(dependent); 
} 

我得和完美的刪除工作的時候。 但是,每當我做了一篇文章,我得到客戶端發送的請求是語法不正確。 JSON的POST請求:

"{ 
    'dependentId' : '1003', 
    'firstName' : 'Vishu', 
    'lastName' : 'poodari', 
    'birthDate' : '1970/04/15' 
}" 

請我用單引號嘗試了所有組合,雙引號,應有盡有。

我使用的休息殼做的操作。

請找我的依賴類

public class Dependent { 
    private String dependentId; 
    private String firstName; 
    private String lastName; 
    private String birthDate; 
    @JsonCreator 
    public Dependent(@JsonProperty("dependentId") String dependentId, @JsonProperty("firstName") String firstName, @JsonProperty("lastName")String lastName, 
      @JsonProperty("birthDate") String birthDate) { 
     this.dependentId = dependentId; 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.birthDate = birthDate; 
    } 
    public String getDependentId() { 
     return dependentId; 
    } 
    public void setDependentId(String dependentId) { 
     this.dependentId = dependentId; 
    } 
    public String getFirstName() { 
     return firstName; 
    } 
    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 
    public String getLastName() { 
     return lastName; 
    } 
    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 
    public String getBirthDate() { 
     return birthDate; 
    } 
    public void setBirthDate(String birthDate) { 
     this.birthDate = birthDate; 
    } 
} 
+0

向我們展示你的'Dependent'類。另外,將您的日誌級別調試並檢查日誌。 –

+0

已添加依賴類。 – Vishwa

+0

您是否正在發送查詢字符串,以便Spring可以生成'@ ModelAttribute'?你期望它是從哪裏產生的? –

回答

10

語法不正確是指以JSON問題,請更換雙單引號。

{"dependentId" : "1003", 
    "firstName" : "Vishu", 
    "lastName" : "poodari", 
    "birthDate" : "1970/04/15" 
} 

還要檢查JSON鍵應與您相關的類屬性的名稱和數據不應該被解析器轉換。

+1

感謝您的回覆。我更正了我的JSON,當我將日誌級別更改爲調試時,它顯示我缺少空的構造函數。現在,它的工作,謝謝大家。 – Vishwa

+1

「我改變了日誌級別進行調試,它顯示我缺少空的構造函數」你能告訴我如何將這些日誌添加到應用程序。 – prime

+0

發生此錯誤的原因是默認構造函數在類中缺少默認構造函數,並且所有內容都將工作 public Dependent(){ } – abosancic

0

當使用捲曲(在DOS)我有同樣的問題。我需要使用所有雙引號,因此掩蓋了正文部分: C:> curl -H「Content-Type:application/json」-X POST -d「{\」id \「:1,\」名字\「:\」Hans \「,\」姓氏\「:\」集合\「}」http://localhost:8081/persons

4

錯誤*客戶端發送的請求在語法上不正確「**在大多數情況下,是不是能淡化(轉換JSON字符串對象),因爲默認的構造函數丟失。

在您的情況存在缺失的默認構造函數,你有參數的構造函數覆蓋默認和傑克遜無法創建對象

public Dependent(@JsonProperty("dependentId") String dependentId, @JsonProperty("firstName") String firstName, @JsonProperty("lastName")String lastName, 
     @JsonProperty("birthDate") String birthDate) {  this.dependentId = dependentId; 
    this.firstName = firstName; 
    this.lastName = lastName; 
    this.birthDate = birthDate; 
} 

還添加默認的構造函數到類,一切都將是工作

public Dependent() { 
} 
相關問題