我有以下MediaPlayerState
类,我以Object
类型获取了它的实例。我序列化了这个类实例,返回的stateString
有一个@class
的键,指向它的类路径。
我的问题是@class
用于什么?是否可以使用stateString
正确解除序列化以更正类类型,而不像Try 1中那样提供MediaPlayerState.class
?
Class MediaPlayerState() {
private String client;
private String playbackState;
}
// Jackson Serialize
Object value = method.invoke(this, null); // this returned MediaPlayerState
map.put(key, objectMapper.writeValueAsString(value));
stateString = {"@class":"com.jessica.mediaplayer.MediaPlayerState",
"playbackState":null,
"client":null}
// Jackson Deserialize try 1 -- able to get correct MediaPlayerState
MediaPlayerState state = objectMapper.readValue(stateString, MediaPlayerState.class);
// Jackson Deserialize try 2 -- incorrect
Object state = objectMapper.readValue(stateString, Object.class);
答案 0 :(得分:0)
我注意到有两个ObjectMapper。
org.codehaus.jackson.map.ObjectMapper
; com.fasterxml.jackson.databind.ObjectMapper
对于问题中的情况,我使用了2的ObjectMapper。如果我使用第一个,我可以摆脱序列化字符串中的@class
。