diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/MapItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/MapItem.php
index 26cdc41c60616719c92c9ce6ed78eb8e0f88d73c..4645b833a7b0519ddf90b3afc5ae27fd89d97243 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/MapItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/MapItem.php
@@ -27,10 +27,8 @@ class MapItem extends FieldItemBase {
    * {@inheritdoc}
    */
   public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
-    $properties['value'] = DataDefinition::create('string')
-      ->setLabel(t('Serialized values'));
-
-    return $properties;
+    // The properties are dynamic and can not be defined statically.
+    return array();
   }
 
   /**
@@ -48,6 +46,15 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
     );
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function toArray() {
+    // The default implementation of toArray() only returns known properties.
+    // For a map, return everything as the properties are not pre-defined.
+    return $this->getValue();
+  }
+
   /**
    * {@inheritdoc}
    */