diff --git a/core/modules/serialization/lib/Drupal/serialization/Normalizer/EntityReferenceItemNormalizer.php b/core/modules/serialization/lib/Drupal/serialization/Normalizer/EntityReferenceItemNormalizer.php
new file mode 100644
index 0000000..c2f021c
--- /dev/null
+++ b/core/modules/serialization/lib/Drupal/serialization/Normalizer/EntityReferenceItemNormalizer.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\serialization\Normalizer\EntityReferenceItemNormalizer.
+ */
+
+namespace Drupal\serialization\Normalizer;
+
+use Symfony\Component\Serializer\Exception\RuntimeException;
+
+/**
+ * Converts a Drupal entity reference item object to an array.
+ */
+class EntityReferenceItemNormalizer extends ComplexDataNormalizer {
+
+  /**
+   * The interface or class that this Normalizer supports.
+   *
+   * @var string
+   */
+  protected $supportedInterfaceOrClass = 'Drupal\Core\Entity\Plugin\DataType\EntityReferenceItem';
+
+  /**
+   * {@inheritdoc}
+   */
+  public function normalize($object, $format = NULL, array $context = array()) {
+    // Convert the object to an array as for any field item (complex data).
+    // For entity reference items, that includes the 'target_id' property.
+    $attributes = parent::normalize($object, $format, $context);
+
+    // Additionally, add the target entity's uuid.
+    if ($target_entity = $object->entity) {
+      $attributes['target_uuid'] = $target_entity->uuid();
+    }
+
+    return $attributes;
+  }
+
+}
diff --git a/core/modules/serialization/lib/Drupal/serialization/Tests/EntitySerializationTest.php b/core/modules/serialization/lib/Drupal/serialization/Tests/EntitySerializationTest.php
index c8a4862..bde69ed 100644
--- a/core/modules/serialization/lib/Drupal/serialization/Tests/EntitySerializationTest.php
+++ b/core/modules/serialization/lib/Drupal/serialization/Tests/EntitySerializationTest.php
@@ -19,6 +19,8 @@
  */
 class EntitySerializationTest extends NormalizerTestBase {
 
+  public static $modules = array('user');
+
   /**
    * The test values.
    *
@@ -51,10 +53,18 @@ public static function getInfo() {
   protected function setUp() {
     parent::setUp();
 
+    $this->installSchema('user', array('users', 'users_roles'));
+    $this->installSchema('system', array('sequences'));
+
+    $this->user = $this->container->get('entity.manager')->getStorageController('user')->create(array(
+      'name' => $this->randomName(),
+    ));
+    $this->user->save();
+
     // Create a test entity to serialize.
     $this->values = array(
       'name' => $this->randomName(),
-      'user_id' => $GLOBALS['user']->id(),
+      'user_id' => $this->user->id(),
       'field_test_text' => array(
         'value' => $this->randomName(),
         'format' => 'full_html',
@@ -95,7 +105,10 @@ public function testNormalize() {
         array('value' => 'entity_test_mulrev'),
       ),
       'user_id' => array(
-        array('target_id' => $this->values['user_id']),
+        array(
+          'target_id' => $this->user->id(),
+          'target_uuid' => $this->user->uuid(),
+        ),
       ),
       'field_test_text' => array(
         array(
@@ -108,7 +121,7 @@ public function testNormalize() {
     $normalized = $this->serializer->normalize($this->entity);
 
     foreach (array_keys($expected) as $fieldName) {
-      $this->assertEqual($expected[$fieldName], $normalized[$fieldName], "ComplexDataNormalizer produces expected array for $fieldName.");
+      $this->assertEqual($expected[$fieldName], $normalized[$fieldName]);
     }
     $this->assertEqual(array_diff_key($normalized, $expected), array(), 'No unexpected data is added to the normalized array.');
   }
@@ -143,7 +156,7 @@ public function testSerialize() {
       'default_langcode' => '<default_langcode><value/></default_langcode>',
       'name' => '<name><value>' . $this->values['name'] . '</value></name>',
       'type' => '<type><value>entity_test_mulrev</value></type>',
-      'user_id' => '<user_id><target_id>' . $this->values['user_id'] . '</target_id></user_id>',
+      'user_id' => '<user_id><target_id>' . $this->user->id() . '</target_id><target_uuid>' . $this->user->uuid() . '</target_uuid></user_id>',
       'field_test_text' => '<field_test_text><value>' . $this->values['field_test_text']['value'] . '</value><format>' . $this->values['field_test_text']['format'] . '</format></field_test_text>',
     );
     // Sort it in the same order as normalised.
diff --git a/core/modules/serialization/serialization.services.yml b/core/modules/serialization/serialization.services.yml
index 160d8b0..7675124 100644
--- a/core/modules/serialization/serialization.services.yml
+++ b/core/modules/serialization/serialization.services.yml
@@ -2,6 +2,10 @@ services:
   serializer:
     class: Symfony\Component\Serializer\Serializer
     arguments: [{  }, {  }]
+  serializer.normalizer.entity_reference_item:
+    class: Drupal\serialization\Normalizer\EntityReferenceItemNormalizer
+    tags:
+      - { name: normalizer }
   serializer.normalizer.complex_data:
     class: Drupal\serialization\Normalizer\ComplexDataNormalizer
     tags:
