Bael 2721 - JSON deserialization mapping different JSON fields to same Java field (#6434)
* BAEL-2721 Examples of @JsonAlias and Gson's alternate parameter * BAEL-2721 Update class and method names for JsonAlias and GsonAlternate
This commit is contained in:
parent
57a1096c1f
commit
8ecfd8de08
|
@ -0,0 +1,40 @@
|
||||||
|
package org.baeldung.gson.entities;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
|
public class Weather {
|
||||||
|
|
||||||
|
@SerializedName(value = "location", alternate = "place")
|
||||||
|
private String location;
|
||||||
|
|
||||||
|
@SerializedName(value = "temp", alternate = "temperature")
|
||||||
|
private int temp;
|
||||||
|
|
||||||
|
@SerializedName(value = "outlook", alternate = "weather")
|
||||||
|
private String outlook;
|
||||||
|
|
||||||
|
public String getLocation() {
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLocation(String location) {
|
||||||
|
this.location = location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTemp() {
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTemp(int temp) {
|
||||||
|
this.temp = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOutlook() {
|
||||||
|
return outlook;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOutlook(String outlook) {
|
||||||
|
this.outlook = outlook;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
package org.baeldung.gson.deserialization;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import org.baeldung.gson.entities.Weather;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
|
||||||
|
public class GsonAlternateUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenTwoJsonFormats_whenDeserialized_thenWeatherObjectsCreated() throws Exception {
|
||||||
|
|
||||||
|
Gson gson = new GsonBuilder().create();
|
||||||
|
|
||||||
|
Weather weather = gson.fromJson("{" +
|
||||||
|
"\"location\": \"London\"," +
|
||||||
|
"\"temp\": 15," +
|
||||||
|
"\"weather\": \"Cloudy\"" +
|
||||||
|
"}", Weather.class);
|
||||||
|
|
||||||
|
assertEquals("London", weather.getLocation());
|
||||||
|
assertEquals("Cloudy", weather.getOutlook());
|
||||||
|
assertEquals(15, weather.getTemp());
|
||||||
|
|
||||||
|
weather = gson.fromJson("{" +
|
||||||
|
"\"place\": \"Lisbon\"," +
|
||||||
|
"\"temperature\": 35," +
|
||||||
|
"\"outlook\": \"Sunny\"" +
|
||||||
|
"}", Weather.class);
|
||||||
|
|
||||||
|
assertEquals("Lisbon", weather.getLocation());
|
||||||
|
assertEquals("Sunny", weather.getOutlook());
|
||||||
|
assertEquals(35, weather.getTemp());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package com.baeldung.jackson.entities;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonAlias;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
public class Weather {
|
||||||
|
|
||||||
|
@JsonProperty("location")
|
||||||
|
@JsonAlias("place")
|
||||||
|
private String location;
|
||||||
|
|
||||||
|
@JsonProperty("temp")
|
||||||
|
@JsonAlias("temperature")
|
||||||
|
private int temp;
|
||||||
|
|
||||||
|
@JsonProperty("outlook")
|
||||||
|
@JsonAlias("weather")
|
||||||
|
private String outlook;
|
||||||
|
|
||||||
|
public String getLocation() {
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLocation(String location) {
|
||||||
|
this.location = location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTemp() {
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTemp(int temp) {
|
||||||
|
this.temp = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOutlook() {
|
||||||
|
return outlook;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOutlook(String outlook) {
|
||||||
|
this.outlook = outlook;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
package com.baeldung.jackson.deserialization.jsonalias;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import com.baeldung.jackson.entities.Weather;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
|
public class JsonAliasUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenTwoJsonFormats_whenDeserialized_thenWeatherObjectsCreated() throws Exception {
|
||||||
|
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
|
||||||
|
Weather weather = mapper.readValue("{" +
|
||||||
|
"\"location\": \"London\"," +
|
||||||
|
"\"temp\": 15," +
|
||||||
|
"\"weather\": \"Cloudy\"" +
|
||||||
|
"}", Weather.class);
|
||||||
|
|
||||||
|
assertEquals("London", weather.getLocation());
|
||||||
|
assertEquals("Cloudy", weather.getOutlook());
|
||||||
|
assertEquals(15, weather.getTemp());
|
||||||
|
|
||||||
|
weather = mapper.readValue("{" +
|
||||||
|
"\"place\": \"Lisbon\"," +
|
||||||
|
"\"temperature\": 35," +
|
||||||
|
"\"outlook\": \"Sunny\"" +
|
||||||
|
"}", Weather.class);
|
||||||
|
|
||||||
|
assertEquals("Lisbon", weather.getLocation());
|
||||||
|
assertEquals("Sunny", weather.getOutlook());
|
||||||
|
assertEquals(35, weather.getTemp());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue