簡體   English   中英

使用Jackson Json序列化無狀態對象時發生異常

[英]Exception when serializing a stateless object with jackson Json

我在我自己的小項目中一直在使用json協議的jackson實現,現在已經進行了一段時間,直到我(第一次)決定序列化無狀態對象。

我知道這聽起來很奇怪,為什么我要發送無狀態對象? 我要序列化的是對服務器的請求,而這個特殊的請求不包含任何字段,而只是在服務器端為指令編寫代碼。 我的模型可以采用任何ClientRequest實現,並將其稱為perform()方法。 我希望它能夠工作,即使請求沒有字段。

代碼如下:

public class GetWallInputsRequest implements ClientRequest<List<WallInput>>
{
   @JsonCreator public GetWallInputsRequest()
   {
   }

   @Override public ServerResponse<List<WallInput>> perform()
   {
      return new WallMessageResponse( Wall.WALL.getInputs() );
   }
}

我收到JsonMappingException:沒有為類GetWallInputsRequest找到序列化程序。 Google不能幫我,這讓我想知道我是否只是愚蠢。 可悲的是,我看不出有什么辦法。

經過大量蠻力嘗試不同的事情后,我解決了它。 通過解決這個問題,我的意思是不弄清楚,但是讓它起作用了。 通過添加以下行:

@JsonAutoDetect(getterVisibility=JsonAutoDetect.Visibility.NONE)

在類聲明之上,它似乎可以解決。 我不知道為什么需要這樣做,但是現在它發送一個空的json字符串而不是崩潰。

該文件說

指示沒有訪問修飾符可以自動檢測的值:可以用於顯式禁用指定類型的自動檢測。

由於您的班級沒有任何明確的表示法來告訴傑克遜有一個要序列化的字段或方法,因此它確定確實沒有要查找的東西。 我想如果沒有這個,我將期望某些東西 ,如引用的文檔中所建議。

http://jackson.codehaus.org/1.9.0/javadoc/org/codehaus/jackson/annotate/JsonAutoDetect.Visibility.html

暫無
暫無

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

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