将多个JSON字段映射到单个Java字段

发布时间:2019-11-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了将多个JSON字段映射到单个Java字段脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

简介

本文中,教大家如何使用Jackson和Gson将不同的JSON字段映射到单个Java字段中。
@H_126_5@Maven依赖

为了使用JacksonGson库,我们需要在POM中添加以下依赖项:

<dependency>     <groupId>com.google.code.gson</groupId>     <artifactId>gson</artifactId>     <version>2.8.5</version>     <scope>test</scope> </dependency> <dependency>     <groupId>com.fasterXMl.jackson.core</groupId>     <artifactId>jackson-databind</artifactId>     <version>2.9.8</version>     <scope>test</scope> </dependency> 

示例JSON

假如,我们希望将不同位置的天气细节输入到我们的Java类中。我们发现了一些将天气数据发布为JSON文档的网站。但是,它们的格式并未是一致的
{     "location": "广州",     "temp": 15,     "weather": "多" }
{     "place": "深圳",     "temperature": 35,     "outlook": "晴天" }

我们希望将这两种格式反序列化为同一个Java类,名为 Weather:

使用Jackson

为实现这一目标,我们将使用Jackson的@JsonProperty和@JsonAlias注释。这两个注解将帮助我们把JSON属性映射到同一Java字段。

首先,我们将使用@JsonProperty注释,以便让Jackson知道要映射的JSON字段的名称。在值@JsonPRoperty注解同时用于反序列化和序列化。

然后我们可以使用@JsonAlias注释。因此,Jackson将知道JSON文档中映射到Java字段的其他字段的名称。在用了@JsonAlias注释的属性用于反序列化。

@JsonProperty("location") @JsonAlias("place") private String location; @JsonProperty("temp") @JsonAlias("temperature") private int temp;   @JsonProperty("outlook") @JsonAlias("weather") private String outlook;  Getter、Setter忽略

现在我们已经添加了注释,让我们使用Jackson的ObjectMapper方法创建Weather对象。

@Test public void test() throws Exception {       ObjectMapper mapper = new ObjectMapper();       Weather weather = mapper.readValue("{n"        + "  "location"": ""广州""

脚本宝典总结

以上是脚本宝典为你收集整理的将多个JSON字段映射到单个Java字段全部内容,希望文章能够帮你解决将多个JSON字段映射到单个Java字段所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。