diff --git a/core/modules/field/lib/Drupal/field/Entity/Field.php b/core/modules/field/lib/Drupal/field/Entity/Field.php
index 21e01c4..9af2a3b 100644
--- a/core/modules/field/lib/Drupal/field/Entity/Field.php
+++ b/core/modules/field/lib/Drupal/field/Entity/Field.php
@@ -711,21 +711,6 @@ public function offsetUnset($offset) {
   }
 
   /**
-   * {@inheritdoc}
-   */
-  public function serialize() {
-    // Only store the definition, not external objects or derived data.
-    return serialize($this->getExportProperties());
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function unserialize($serialized) {
-    $this->__construct(unserialize($serialized));
-  }
-
-  /**
    * A list of columns that can not be used as field type columns.
    *
    * @return array
@@ -768,4 +753,22 @@ public function hasData() {
 
     return FALSE;
   }
+
+  /**
+   * Implements the magic __sleep() method.
+   */
+  public function __sleep() {
+    // Only serialize properties from getExportProperties().
+    return array_keys(array_intersect_key($this->getExportProperties(), get_object_vars($this)));
+  }
+
+  /**
+   * Implements the magic __wakeup() method.
+   */
+  public function __wakeup() {
+    // Run the values from getExportProperties() through __construct().
+    $values = array_intersect_key($this->getExportProperties(), get_object_vars($this));
+    $this->__construct($values);
+  }
+
 }
diff --git a/core/modules/field/lib/Drupal/field/Entity/FieldInstance.php b/core/modules/field/lib/Drupal/field/Entity/FieldInstance.php
index f99fb1f..f5c467f 100644
--- a/core/modules/field/lib/Drupal/field/Entity/FieldInstance.php
+++ b/core/modules/field/lib/Drupal/field/Entity/FieldInstance.php
@@ -314,7 +314,9 @@ public function getExportProperties() {
 
     // Additionally, include the field type, that is needed to be able to
     // generate the field-type-dependant parts of the config schema.
-    $properties['field_type'] = $this->field->type;
+    if (isset($this->field->type)) {
+      $properties['field_type'] = $this->field->type;
+    }
 
     return $properties;
   }
@@ -644,18 +646,20 @@ public function offsetUnset($offset) {
   }
 
   /**
-   * {@inheritdoc}
+   * Implements the magic __sleep() method.
    */
-  public function serialize() {
-    // Only store the definition, not external objects or derived data.
-    return serialize($this->getExportProperties());
+  public function __sleep() {
+    // Only serialize properties from getExportProperties().
+    return array_keys(array_intersect_key($this->getExportProperties(), get_object_vars($this)));
   }
 
   /**
-   * {@inheritdoc}
+   * Implements the magic __wakeup() method.
    */
-  public function unserialize($serialized) {
-    $this->__construct(unserialize($serialized));
+  public function __wakeup() {
+    // Run the values from getExportProperties() through __construct().
+    $values = array_intersect_key($this->getExportProperties(), get_object_vars($this));
+    $this->__construct($values);
   }
 
 }
diff --git a/core/modules/field/lib/Drupal/field/FieldInstanceInterface.php b/core/modules/field/lib/Drupal/field/FieldInstanceInterface.php
index d2a0b85..318bf4f 100644
--- a/core/modules/field/lib/Drupal/field/FieldInstanceInterface.php
+++ b/core/modules/field/lib/Drupal/field/FieldInstanceInterface.php
@@ -13,7 +13,7 @@
 /**
  * Provides an interface defining a field instance entity.
  */
-interface FieldInstanceInterface extends ConfigEntityInterface, FieldDefinitionInterface, \ArrayAccess, \Serializable {
+interface FieldInstanceInterface extends ConfigEntityInterface, FieldDefinitionInterface, \ArrayAccess {
 
   /**
    * Returns the field entity for this instance.
diff --git a/core/modules/field/lib/Drupal/field/FieldInterface.php b/core/modules/field/lib/Drupal/field/FieldInterface.php
index f1a2ff7..831f295 100644
--- a/core/modules/field/lib/Drupal/field/FieldInterface.php
+++ b/core/modules/field/lib/Drupal/field/FieldInterface.php
@@ -13,7 +13,7 @@
 /**
  * Provides an interface defining a field entity.
  */
-interface FieldInterface extends ConfigEntityInterface, FieldDefinitionInterface, \ArrayAccess, \Serializable {
+interface FieldInterface extends ConfigEntityInterface, FieldDefinitionInterface, \ArrayAccess {
 
   /**
    * Returns the field schema.
