diff --git a/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php b/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php
index dee07c1..c324126 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php
@@ -62,7 +62,14 @@ protected function doCreate(array $values) {
       if (!isset($values[$this->bundleKey])) {
         throw new EntityStorageException(String::format('Missing bundle for entity type @type', array('@type' => $this->entityTypeId)));
       }
+
       $bundle = $values[$this->bundleKey];
+
+      if (is_array($bundle)) {
+        do {
+          $bundle = reset($bundle);
+        } while (is_array($bundle));
+      }
     }
     $entity = new $this->entityClass(array(), $this->entityTypeId, $bundle);
 
diff --git a/core/modules/serialization/src/Normalizer/EntityNormalizer.php b/core/modules/serialization/src/Normalizer/EntityNormalizer.php
index 5e81b5a..79d9c84 100644
--- a/core/modules/serialization/src/Normalizer/EntityNormalizer.php
+++ b/core/modules/serialization/src/Normalizer/EntityNormalizer.php
@@ -50,14 +50,6 @@ public function denormalize($data, $class, $format = NULL, array $context = arra
 
     $entity_type = $this->entityManager->getDefinition($context['entity_type']);
 
-    // The bundle property behaves differently from other entity properties.
-    // i.e. the nested structure with a 'value' key does not work.
-    if ($entity_type->hasKey('bundle')) {
-      $bundle_key = $entity_type->getKey('bundle');
-      $type = $data[$bundle_key][0]['value'];
-      $data[$bundle_key] = $type;
-    }
-
     return $this->entityManager->getStorage($context['entity_type'])->create($data);
   }
 
