2014-10-17 98 views
0

我正在使用Spring 4.1框架開發web服務。當我返回一個Java對象作爲響應時,它會自動轉換爲JSON並傳遞給客戶端,因此我假設JSON解析器位於classpath中,並且配置正確。然而,它未能在請求體從JSON轉換爲Java對象和客戶端獲取的400使用Spring MVC解析JSON請求體

這裏HTTP響應是Web服務的樣子:

這裏是請求的樣子:

Method: Post 
Content-Type: application/json; charset=utf-8 
Body: {"code":0,"area":12} 

如果我收集請求主體爲字符串並解析它手動,然後它工作,因此它的有效的JSON但由於某種原因,它不會自動解析它。我不知道如何解決這個問題。請幫忙。提前致謝。

+0

我不確定,但也許json轉換器不拾取包私有屬性。嘗試在Details類中爲它們添加getter和setter,或者將它們定義爲public。如果您使用傑克遜,您也可以用'@ JsonProperty'註釋它們。 – Vladimir 2014-10-17 14:29:35

+0

添加@JsonProperty現在給出響應代碼415. – Aarkan 2014-10-17 14:37:28

回答

1

您在您的Details類中有包私有屬性,所以它們可能無法被json轉換器識別。

您有幾種選擇:

  • 將它們定義爲公共(不推薦)
  • 提供getter和setter
  • ,如果你使用的是傑克遜,你可以用@JsonProperty註釋它們,讓它們套餐 - 私人
+0

謝謝。試圖讓他們公開 - 沒有區別。現在添加@JsonProperty會給出響應代碼415. – Aarkan 2014-10-17 14:43:06

+0

415可能在序列化響應時彈出 - 您確定請求仍然沒有進入方法嗎?嘗試在方法開始處添加斷點或某個控制檯輸出。 – Vladimir 2014-10-17 14:48:55

+0

是的,我添加了一個斷點,但它沒有命中。 – Aarkan 2014-10-17 14:49:36

1

最後我得到了這個原因。我使用的是不是靜態的內部類。使這些靜態固定的問題。