如何在symfony中序列化嵌套对象的特定属性?

奥博菲尼

我有 2 个具有多对多关系 Author 和 Book 的实体。

现在,当我将 Book 序列化为 json 时,它为我提供了嵌套作者对象的所有字段。


{
    "id": 3,
    "name": "clean code",
    "authors": [
        {
            "id": 4,
            "name": "Martin Robert "
        },
        ...
    ]
}

但是我如何让它只返回特定的字段,例如只返回每个作者的名字。

我尝试将组添加到作者实体,但是当我运行序列化程序时,组似乎不适用于嵌套对象,因为我得到了相同的结果。

    $book=$this->serializer->normalize($book, null, ['groups' => 'Concise']);
    $book=$this->serializer->serialize($book,'json');
雷克文

您应该看看JMS Serializer,它是一个用于序列化对象的强大库,您可以通过配置哪些字段应该保留在序列化过程中,轻松地在实体上使用 @Groups 注释来完成您的要求。

书.php

use JMS\Serializer\Annotation\Groups;

class Book {
  /** @Groups({"Concise"}) */
  private $id;

  /** @Groups({"Concise"}) */
  private $name;

  /** @Groups({"Concise"}) */
  private $authors;

  ...
}

如果您只想在序列化图书实体时检索作者姓名,只需在姓名字段上添加@Groups 注释。

作者.php

use JMS\Serializer\Annotation\Groups;

class Author {
  private $id;

  /** @Groups({"Concise"}) */
  private $name;

  private $books;

  ...
}

然后

use JMS\Serializer\SerializerBuilder;
use JMS\Serializer\SerializationContext;


$serializer = SerializerBuilder::create()->build();
$context = SerializationContext::create()->setGroups(array('Concise'));
$json = $serializer->serialize($book, 'json', $context);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在具有多个child实例的嵌套对象上使用Symfony序列化程序?

如何在一个特定的序列化中序列化除特定属性以外的所有属性

父对象将如何在 Django Restframework 嵌套序列化器中创建

在DRF中序列化嵌套对象

如何在 Django 中修改对象的序列化属性?

如何在Symfony中反序列化数组

如何从序列化中排除GWT中的对象属性?

如何在 Typescript 中序列化/反序列化复杂对象,例如反序列化对象与序列化对象的类型相同

如何在 JSON.NET 中反序列化具有嵌套对象列表的对象列表?

如何在json序列化中跳过属性名称?

如何在Haskell中对通过网络发送的对象进行序列化/反序列化?

如何在Kotlin中序列化/反序列化Custom对象数组?

如何在servlet中序列化Java对象

如何在Windows Phone 7中序列化对象

如何在GET请求中序列化查询对象?

如何在Django中序列化多个对象

C#如何将部分嵌套的JSON保存到对象属性中,但不反序列化?

如何在Django中序列化特定ID?

如何反序列化JSON对象,但将特定字段保留为String而不是嵌套对象?

如何以特定顺序序列化和反序列化具有重复属性名称的 JSON 对象?

DRF 嵌套序列化器 - 对象没有属性

在EF模型的JSON序列化过程中向嵌套对象添加属性

序列化/反序列化嵌套的 POCO 属性而不在 json.net 中嵌套

如何在使用嵌套序列化器的Django Restframework序列化器中动态更改字段映射?

如何在 C# 通用处理程序中引用从 javascript 接收的反序列化对象属性?

如何在不实际序列化对象的情况下估计Java中对象的序列化大小?

如何在Java中使用Gson @SerializedName序列化嵌套对象?

如何在C#中序列化List <T>属性而不在XML序列化中显示其类型

如何在不面对 AttributeError 的情况下嵌套这些序列化:'BlogPost' 对象没有属性 'review_set'