diff --git a/simpleexample2/core/src/main/java/simpleex/json/LatLongSerializer.java b/simpleexample2/core/src/main/java/simpleex/json/LatLongSerializer.java index d56f1013c690e4fa6a0e3a6bd46f236e194bc206..d4d15425136199d4a1630d90530cdd0058cdc5f3 100644 --- a/simpleexample2/core/src/main/java/simpleex/json/LatLongSerializer.java +++ b/simpleexample2/core/src/main/java/simpleex/json/LatLongSerializer.java @@ -56,8 +56,8 @@ public class LatLongSerializer extends JsonSerializer<LatLong> { } jsonGen.writeEndArray(); } + jsonGen.writeEndObject(); } - jsonGen.writeEndObject(); } } diff --git a/simpleexample2/core/src/test/java/simpleex/json/LatLongsJsonTest.java b/simpleexample2/core/src/test/java/simpleex/json/LatLongsJsonTest.java index 4345ef642db10005f82539bfe80f4fce5c586fae..cf1d8e99bc68c892ab402a2e188abbb66e09e0d5 100644 --- a/simpleexample2/core/src/test/java/simpleex/json/LatLongsJsonTest.java +++ b/simpleexample2/core/src/test/java/simpleex/json/LatLongsJsonTest.java @@ -1,5 +1,6 @@ package simpleex.json; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.Arrays; import java.util.Iterator; @@ -59,6 +60,34 @@ public class LatLongsJsonTest { assertEqualsIgnoreWhitespace(expectedJson, actualJson); } + @Test + public void testLatLongsMetaDataSerialization() { + final LatLong latLong = latLong1(); + final MetaData metaData = latLong.getMetaData(); + metaData.addTags("aTag", "bTag"); + metaData.setProperty("aProperty", "aValue"); + final LatLongs latLongs = new LatLongs(latLong); + try { + final String actualJson = objectMapper.writeValueAsString(latLongs); + final String expectedJson = "[{\"latitude\":63.1,\"longitude\":12.3," + + "\"metaData\":{\"tags\":[\"aTag\",\"bTag\"],\"properties\":[{\"name\":\"aProperty\",\"value\":\"aValue\"}]}}]"; + assertEqualsIgnoreWhitespace(expectedJson, actualJson); + } catch (final JsonProcessingException e) { + Assert.fail(); + } catch (final Exception e) { + Assert.fail(); + } + } + + @Test + public void testLatLongsMetaDataDeserialization() throws Exception { + final String json = "[{\"latitude\":63.1,\"longitude\":12.3," + + "\"metaData\":{\"tags\":[\"aTag\",\"bTag\"],\"properties\":[{\"name\":\"aProperty\",\"value\":\"aValue\"}]}}]"; + final LatLongs latLongs = objectMapper.readValue(json, LatLongs.class); + Assert.assertEquals(1, latLongs.getLatLongCount()); + Assert.assertTrue(latLongs.getLatLong(0).hasMetaData()); + } + // relies on a certain order private void check(final Iterator<String> it, final String... ss) { final Iterator<String> it1 = Arrays.asList(ss).iterator();