You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jms/serializer是否有symfony/serializer SerializedPath的等价替代?

JMS Serializer 实现嵌套字段映射的方案

在JMS Serializer中,有两种常用方式实现和Symfony Serializer的SerializedPath等价的嵌套字段映射:

1. 使用@SerializedName注解(推荐)

直接通过点分隔符指定嵌套字段路径,将JSON里的attributes.name映射到Image类的$name属性:

use JMS\Serializer\Annotation as Serializer;

class Image {
    /**
     * @Serializer\SerializedName("attributes.name")
     */
    public string $name;
}

PHP 8+ 属性写法:

use JMS\Serializer\Annotation as Serializer;

class Image {
    #[Serializer\SerializedName("attributes.name")]
    public string $name;
}

2. 使用@Accessor注解自定义映射逻辑

如果需要更灵活的处理(比如额外数据转换),可以通过@Accessor指定自定义的setter方法,手动提取嵌套字段的值:

use JMS\Serializer\Annotation as Serializer;

class Image {
    public string $name;

    /**
     * @Serializer\Accessor(setter="setNameFromAttributes")
     */
    public function setNameFromAttributes(array $attributes): void {
        $this->name = $attributes['name'];
    }
}

这种方式会将JSON中的attributes数组直接传入setter方法,你可以在方法内提取需要的字段值。

内容的提问来源于stack exchange,提问作者SuperBob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 02:57:19