Json Jackson-有一个@class的键,它的值是类的完整路径-有什么原因吗?

Json Jackson-有一个@class的键,它的值是类的完整路径-有什么原因吗?,json,jackson,Json,Jackson,我有下面的MediaPlayerState类,我以对象类型获得了它的实例。我序列化了这个类实例,返回的stateString有一个指向其类路径的@class键 我的问题是这个@class用于什么?是否可以使用它来正确地反序列化stateString以更正类类型,而无需像Try 1中那样提供MediaPlayerState.class Class MediaPlayerState() { private String client; private String playbackS

我有下面的
MediaPlayerState
类,我以
对象
类型获得了它的实例。我序列化了这个类实例,返回的
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);

我注意到有两个ObjectMapper

  • jackson mapper:
    org.codehaus.jackson.map.ObjectMapper
  • jackson数据绑定:
    com.fasterxml.jackson.databind.ObjectMapper
  • 对于问题中的案例,我使用了ObjectMapper 2。如果我使用第一个,我可以去掉序列化字符串中的
    @class