java – 没有内部类的Json Jackson反序列化
发布时间:2020-12-15 08:33:04 所属栏目:Java 来源:网络整理
导读:我有一个关于使用Jackson的Json反序列化的问题. 我想使用类似这样的类来反序列化Json文件: (摘自 http://wiki.fasterxml.com/JacksonInFiveMinutes) public class User { public enum Gender { MALE,FEMALE }; public static class Name { private String _
我有一个关于使用Jackson的Json反序列化的问题.
我想使用类似这样的类来反序列化Json文件: (摘自 http://wiki.fasterxml.com/JacksonInFiveMinutes) 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库来创建这样的类,并且它不支持内部或匿名类. 先感谢您 解决方法
静态内部类名称和同名的顶级类之间应该没有区别.杰克逊运行时不应该有意义地区分这两种情况.
您是否尝试将Name类移出User,将其更改为顶级类?它仍然应该像以前一样工作. 编辑:我刚试过这个,当Name是顶级类时,它工作正常.我怀疑,为了简洁,这个例子把它作为一个内部阶级. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |