java-使用@JsonProperty序列化地图
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-使用@JsonProperty序列化地图,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1866字,纯文字阅读大概需要3分钟。
内容图文
![java-使用@JsonProperty序列化地图](/upload/InfoBanner/zyjiaocheng/680/f1198f8bc16c4949b6aa1e5596146c3f.jpg)
我尝试使用@JsonProperty批注对包含Map的对象进行序列化,但是当我对其进行测试时,我看到仅对映射的键进行了序列化.我查了一下,但没有找到解决办法,我在做什么错?
public class People {
private final Map<Long,String> idToNameMap;
public People(@JsonProperty("idToNameMap") final Map<Long,String> idToNameMap) {
this.idToNameMap = idToNameMap;
}
}
public class PeopleTest {
private static final long ID_1 = 111l;
private static final long ID_2 = 222l;
private static final String NAME_1 = "name1";
private static final String NAME_2 = "name2";
private final ObjectMapper mapper = new ObjectMapper();
@Test
public void testFromAndToJSON() throws Exception {
Map<Long,String> idToNameMap = Maps.newHashMap();
idToNameMap.put(ID_1,NAME_1);
idToNameMap.put(ID_2,NAME_2);
mapper.writeValueAsString(new People(idToNameMap));
}
}
解决方法:
您没有为People-class提供任何序列化信息,仅提供了反序列化信息.
以下应该为您解决:
public class People {
private final Map<Long, String> idToNameMap;
// The constructor works for deserialization and has nothing to do with serialization
public People(@JsonProperty("idToNameMap") final Map<Long, String> idToNameMap) {
this.idToNameMap = idToNameMap;
}
// Getters are typically automatically serialized
public Map<Long, String> getIdToNameMap() {
return idToNameMap;
}
}
提供序列化信息有多种方法.另一种方法是对方法使用@JsonProperty注释-例如:
@JsonProperty("idToNameMap")
public Map<Long, String> getMapping() {
return idToNameMap;
}
或者,另一种方法是将注释放在实际字段上.我不建议这样做,因为它有些神奇.
public class People {
@JsonProperty("idToNameMap")
private final Map<Long, String> idToNameMap;
public People(@JsonProperty("idToNameMap") final Map<Long, String> idToNameMap) {
this.idToNameMap = idToNameMap;
}
}
我个人更喜欢:
>将注释放置在方法上
>对象是不可变的(如果可能的话)
>并添加了正确的@JsonCreator方法(该构造函数可用于您的类,但为了创建更复杂的对象结构,@ JsonCreator将为您提供帮助).
内容总结
以上是互联网集市为您收集整理的java-使用@JsonProperty序列化地图全部内容,希望文章能够帮你解决java-使用@JsonProperty序列化地图所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。