// We normalize each individual property, so each can do their own casting,
// if needed.
/** @var \Drupal\Core\TypedData\TypedDataInterface $property */
- foreach (TypedDataInternalPropertiesHelper::getNonInternalProperties($field_item) as $property_name => $property) {
+ $field_properties = !empty($field_item->getProperties(TRUE))
+ ? TypedDataInternalPropertiesHelper::getNonInternalProperties($field_item)
+ : $field_item->getValue();
+ foreach ($field_properties as $property_name => $property) {
$normalized[$property_name] = $this->serializer->normalize($property, $format, $context);
}