處理我有一個Android應用連接到一個JSON的WebService。其中一種方法返回「flag-type」值的逗號分隔字符串列表,換句話說就是一個位掩碼。例如,它返回「FileAppend,FileOverwrite」。對於這種類型我有一個Java枚舉定義java的傑克遜JSON處理器 - 使用RestTemplate - EnumSet
enum FileMode { FileAppend, FileOverwrite, ... }
,並希望傑克遜解串器以JSON有效載荷返回的字符串列表會自動轉換成枚舉。我嘗試了原始的Enum FileMode和EnumSet,但是在反序列化的時候我都遇到了異常。有沒有辦法以某種方式進行註釋,以便反序列化器知道如何反序列化它?
@JsonIgnoreProperties(ignoreUnknown=true)
@JsonTypeName("AccessMask")
@JsonAutoDetect
public enum AccessMask {
None,
HideDateCreated,
HideDateModified,
HideDateTaken,
HideMetaData,
HideUserStats,
HideVisits,
NoCollections,
NoPrivateSearch,
NoPublicSearch,
NoRecentList,
ProtectExif,
ProtectXXLarge, // new in version 1.3
ProtectExtraLarge,
ProtectLarge,
ProtectMedium,
ProtectOriginals,
ProtectGuestbook, // new in version 1.1
NoPublicGuestbookPosts, // new in version 1.1
NoPrivateGuestbookPosts, // new in version 1.1
NoAnonymousGuestbookPosts, // new in version 1.1
ProtectComments, // new in version 1.1
NoPublicComments, // new in version 1.1
NoPrivateComments, // new in version 1.1
NoAnonymousComments, // new in version 1.1
PasswordProtectOriginals, // new in version 1.2
ProtectAll }
// and below is a property of a class defined below.
class Picture {
@JsonProperty("AccessMask")
EnumSet<AccessMask> accessMask;
}
AccessMask是一個位字段,意思是它可以有多個字段集(位掩碼)。 當我使用JSON序列化解串器這個班,我得到了以下異常 嵌套的例外是org.codehaus.jackson.map.JsonMappingException:無法反序列化java.util.EnumSet中的實例進行VALUE_STRING令牌
什麼可能原因?
問候
什麼異常?基本的JSON字符串列表像'[「enum1」,「enum3」]'將工作得很好,假設值與枚舉值匹配。 – StaxMan
我提供了有關正在反序列化的異常和類型的詳細信息。 – cubesoft