SpringMVC @RequestBody問題:Unrecognized field , not marked as ignorable,springfield

來源:互聯網
上載者:User

SpringMVC @RequestBody問題:Unrecognized field , not marked as ignorable,springfield

在使用Json傳值並且使用@RequestBody註解的時候需要注意一些問題:


第一條容易理解,因為RequestBody就是request的inputStream,這個流在第一次使用該註解後會關閉,後面的都會報錯(stream closed)。


第二條如果沒有包含前台傳來的欄位,就會報錯:Unrecognized field xxx , not marked as ignorable,這是因為MappingJacksonHttpMessageConverter預設要求必須存在相應的欄位。如果沒有前台傳來的某個欄位,就會報錯。。


解決方案有很多,可以增加一個欄位來接收前台傳來的這個值,如果存在多個欄位,這種方式很不好(就算一個欄位,如果沒用,新增欄位也不好)。


或者在前台往後台傳值的時候,去掉無用的欄位。這樣還能減少網路傳輸的大小。


還有一些方法,這些方法主要是使用Jackson提供的json註解。


@JsonIgnore註解用來忽略某些欄位,可以用在Field或者Getter方法上,用在Setter方法時,和Filed效果一樣。這個註解只能用在POJO存在的欄位要忽略的情況,不能滿足現在需要的情況。


@JsonIgnoreProperties(ignoreUnknown = true),將這個註解寫在類上之後,就會忽略類中不存在的欄位,可以滿足當前的需要。這個註解還可以指定要忽略的欄位。使用方法如下:

@JsonIgnoreProperties({ "internalId", "secretKey" })

指定的欄位不會被序列化和還原序列化。

 原文: http://blog.csdn.net/isea533/article/details/33397735

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.