class ListNormalizer

Same name and namespace in other branches
  1. 11.x core/modules/serialization/src/Normalizer/ListNormalizer.php \Drupal\serialization\Normalizer\ListNormalizer

Converts list objects to arrays.

Ordinarily, this would be handled automatically by Serializer, but since there is a TypedDataNormalizer and the Field class extends TypedData, any Field will be handled by that Normalizer instead of being traversed. This class ensures that TypedData classes that also implement ListInterface are traversed instead of simply returning getValue().

Hierarchy

Expanded class hierarchy of ListNormalizer

1 file declares its use of ListNormalizer
ListNormalizerTest.php in core/modules/serialization/tests/src/Unit/Normalizer/ListNormalizerTest.php
1 string reference to 'ListNormalizer'
serialization.services.yml in core/modules/serialization/serialization.services.yml
core/modules/serialization/serialization.services.yml
1 service uses ListNormalizer
serializer.normalizer.list in core/modules/serialization/serialization.services.yml
Drupal\serialization\Normalizer\ListNormalizer

File

core/modules/serialization/src/Normalizer/ListNormalizer.php, line 16

Namespace

Drupal\serialization\Normalizer
View source
class ListNormalizer extends NormalizerBase {
  
  /**
   * {@inheritdoc}
   */
  protected $supportedInterfaceOrClass = ListInterface::class;
  
  /**
   * {@inheritdoc}
   */
  public function normalize($object, $format = NULL, array $context = []) {
    $attributes = [];
    foreach ($object as $fieldItem) {
      $attributes[] = $this->serializer
        ->normalize($fieldItem, $format, $context);
    }
    return $attributes;
  }
  
  /**
   * {@inheritdoc}
   */
  public function hasCacheableSupportsMethod() : bool {
    return TRUE;
  }

}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.