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();