我有一個關於使用Jackson的Json反序列化的問題。 我想用一類像這樣的反序列化JSON文件: (從http://wiki.fasterxml.com/JacksonInFiveMinutes拍攝)Json Jackson沒有內部類的反序列化
public class User
{
public enum Gender { MALE, FEMALE };
public static class Name {
private String _first, _last;
public String getFirst() { return _first; }
public String getLast() { return _last; }
public void setFirst(String s) { _first = s; }
public void setLast(String s) { _last = s; }
}
private Gender _gender;
private Name _name;
private boolean _isVerified;
private byte[] _userImage;
public Name getName() { return _name; }
public boolean isVerified() { return _isVerified; }
public Gender getGender() { return _gender; }
public byte[] getUserImage() { return _userImage; }
public void setName(Name n) { _name = n; }
public void setVerified(boolean b) { _isVerified = b; }
public void setGender(Gender g) { _gender = g; }
public void setUserImage(byte[] b) { _userImage = b; }
}
JSON文件可以以這種方式使用所謂的「全數據綁定」反序列化:
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(new File("user.json"), User.class);
我的問題是使用內部類「名稱」。我想在不使用內部類的情況下做同樣的事情。 「用戶」類將成爲這樣的:
import Name;
import Gender;
public class User
{
private Gender _gender;
private Name _name;
private boolean _isVerified;
private byte[] _userImage;
public Name getName() { return _name; }
public boolean isVerified() { return _isVerified; }
public Gender getGender() { return _gender; }
public byte[] getUserImage() { return _userImage; }
public void setName(Name n) { _name = n; }
public void setVerified(boolean b) { _isVerified = b; }
public void setGender(Gender g) { _gender = g; }
public void setUserImage(byte[] b) { _userImage = b; }
}
這意味着找到一種方法,以便執行反序列化到指定映射器所需的所有類。
這可能嗎?我查看了文檔,但找不到任何解決方案。
我的需求來自於我使用Javassist庫來創建這樣的類,並且它不支持內部或匿名類。
預先感謝您
非常感謝你skaffman! 我沒有意識到這一點。 – 2010-04-05 12:32:50
@Eto:贊同並答覆答案是傳統的感謝方法:) – skaffman 2010-04-05 12:36:44