问题标签 [jmsserializerbundle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2135 浏览

json - Symfony2:使用 JMS 序列化器嵌套对象超时

尝试序列化具有 3 个嵌套对象属性的对象会导致

错误:达到“250”的最大函数嵌套级别

Entity Volunteer 有 OneToOne with Person,OnetoMany with Focuses,OneToMany with Skills。如果响应被序列化$volunteer->getPerson();,则会发生预期的 json 响应。但是,$volunteer->getFocuses();也会触发最大嵌套级别错误。

更新

当 xdebug max 增加时,在开发环境中这只会在 30 秒内超时。

控制器片段:

0 投票
1 回答
804 浏览

php - JMSSerializerBundle - 在自定义处理程序中继续反序列化

我有一个执行对象反序列化的自定义处理程序:

我不想自己承担所有的反序列化工作,我只想做一些。例如,我有一个相册(id、名称、描述、照片),我想自己反序列化“描述”,并将所有其他工作留给捆绑包。

我知道这是使用上下文、访问者和导航器完成的,但我不知道如何

0 投票
1 回答
1861 浏览

json - 用关联序列化实体

我有一个与此处声明的另一个实体(类型)具有多对一关系的实体(项目):

当我序列化项目时,它包括引用实体(类型)上的其他属性,而我想要的只是 ID:

取而代之的是:

我已经阅读了文档并使用组和 maxdepths 进行了测试,但没有运气,并浏览了我遇到的问题: https ://github.com/schmittjoh/JMSSerializerBundle/issues/61#issuecomment-3297955

是否已经包含此功能?

使用"jms/serializer-bundle": "dev-master"

编辑

这是具有关联的示例序列化实体:

我真正想要的是这个(没有关联实体的任何额外属性):(使用 JMS Serializer,因为它是一个很棒的库:))

0 投票
2 回答
7253 浏览

symfony - Why does JMS Serializer ignore mappings for nested collections?

I have entities in a OneToMany relation:

Forecast -> has many -> Brick(s)

I've created serialization mappings for each in Resources/config/serializer/Entity.xxx.yml where xxx is entity name.

Each entity has exclusion policy set to ALL and some of it's properties are exposed, eg:

When in my template I do {{ forecast|serialize|raw }} I am getting:

Forecast -> as I expected -> only exposed fields are serialized

Bricks collection -> all properties are serialized -> it seems that my Entity.Brick.yml is ignored... why?

In brick I have only ID and name exposed.. but in serialized output I have all properties (created_at, updated_at.. and more).. why? They should be excluded by "exclusion_policy: ALL". It seems that config for nested collection is not used.

EDIT:

Yes, I did clear cache after each change in .yml config

After some suggestions I added @ExclusionPolicy("ALL") annotation to the Brick class and @Expose on ID, just to see what happens.. and suddenly it works! Not only ID is exposed, but everything is like in my YML configuration.

So I removed the annotations.. and it still works!

So it seems that adding Annotations somehow forced serializer to recognize my YML config. I don't know why though. That worries me.

Is it possible APC cache is guilty? I did clear Symfony2 cache numerous of times, but APC only a few.

0 投票
2 回答
5513 浏览

symfony - JMS 反序列化不检索对象值

我正在使用 Doctrine、Symfony 2.4、FOSRestBundle 和 JMSBundle 来创建一个简单的 REST api。我创建了一个简单的用户实体和一个控制器来实现 POST 方法(GET 方法工作正常)。当我尝试发布数据时,我的 $user 对象属性始终为空,请求-> 数据上的值没有被反序列化。真的一整天都在与这个作斗争。

我的用户实体:

然后在我的用户控制器 (src/ApiBundle/Controller/UserController.php) 我有: namespace AbcBank\ApiBundle\Controller;

将不胜感激任何帮助.. 非常非常令人沮丧,可能我错过了一些愚蠢的东西..

亲切的问候。

0 投票
2 回答
956 浏览

symfony - FOSElasticaBundle - JMSSerializerBundle 排除策略在 FOSUserBundle 用户实体上不起作用

我将 FOSElasticaBundle 与 orm 持久性驱动程序和 JMSSerializerBundle 序列化程序一起使用。

我的用户由 FOSUserBundle 管理,我正在尝试对这些用户进行索引,但排除了一些字段,例如密码。

JMSSerializerBundle 排除策略(例如 @ExclusionPolicy("all") @Expose @Exclude)在添加到扩展 FOS\UserBundle\Model\User 的我的用户实体时没有任何影响。然而,这些策略在我的其他实体上按预期工作。

如何阻止将“盐”和“密码”等字段添加到 Elasticsearch 索引中?

0 投票
1 回答
1232 浏览

symfony - 序列化程序工作的实体类的预期元数据是什么?

我正在尝试配置 JMS/Serializer 以排除我的实体的属性。

然而,我陷入了以下异常:

我需要在那里定义的预期元数据是什么?

Entity.serializer.yml的仅由

0 投票
1 回答
4490 浏览

symfony - 如何让组为 JMSSerializerBundle 和 FOSRestBundle 工作?

我正在尝试设置不同的组以根据上下文实现我的实体的不同类型的序列化。

我的配置如下所示:

我希望除非设置了组,否则不应公开具有属性的组。

我正在尝试通过以下方式在我的控制器中设置组:

然而,对于暴露的和不暴露的没有影响。即使我不尝试更改SerializationContextgroups选项似乎总是被忽略。

我知道我的配置正在运行,因为我可以通过公开标志切换属性。

然而我在这里做错了什么?

0 投票
1 回答
1187 浏览

jmsserializerbundle - 使用 DoctrineObjectConstructor,如何创建新实体?

我正在尝试使用 JMSSerializerBundle 将 JSON 消耗到 Doctrine 实体中。我需要在数据库中不存在的地方创建新实体,并在现有实体已经存在时更新它们。我正在使用JMSSerializer 包中包含的DoctrineObjectConstructor来帮助解决这个问题。当我使用包含指定为标识符的属性的 JSON 时,例如:

{ "id": 1, "some_other_attribute": "stuff" }

通过尝试对其进行反序列化,JMSSerializer 会导致警告并最终因尝试利用反射在空值上设置属性而出现异常。警告看起来像这样:

PHP Warning: ReflectionProperty::setValue() expects parameter 1 to be object, null given in /Users/cdonadeo/Repos/Ubertester/vendor/jms/serializer/src/JMS/Serializer/GenericDeserializationVisitor.php on line 176

如果我在我的数据库中手动插入一个 ID 为 1 的实体并再次尝试,那么我不会收到任何错误,并且一切似乎都正常工作,但我现在的功能不足一半。我查看了 DoctrineObjectConstructor 类的代码,顶部有一条注释:

/** * Doctrine object constructor for new (or existing) objects during deserialization. */

但我看不出它怎么可能创建一个新实体,因为在construct()函数完成所有检查后,最后它调用:

$object = $objectManager->find($metadata->name, $identifierList);

由于数据库中不存在标识符,因此结果为 null,这最终是从函数返回的。这解释了为什么在数据库中插入具有适当 ID 的行会使事情正常进行:find()现在返回一个适当的 Entity 对象,这是库的其余部分所期望的。

我是用错了图书馆还是它坏了?我分叉了 Git 存储库并进行了编辑,并尝试了一切似乎或多或少地按我预期的方式工作。该编辑确实有一些缺点,这让我想知道我是否不仅仅是让这变得比它必须的更困难。我看到的最大问题是它会导致持久化和非持久化实体混合在一起,无法分辨哪些是哪些,但我不知道这是否有什么大不了的。

0 投票
1 回答
177 浏览

json - Symfony 2 中奇怪的编码行为

我正在使用 Symfony 和 JMS Serializer Bundle 为应用程序开发一个简单的 REST API。我有几个 URL - 例如/api/answers/{id}。现在的问题是,如果我用 id=1 调用那个 URL,一切都像一个魅力,当我用 id=2、3、4 调用它时……JSON 内容编码不正确。

后端脚本如下所示(这只是一个原型,我将对其进行重构):

我所有的数据库表都设置为utf8_unicode_ci,配置中的每一位也设置为 utf8 。

PS:我用 print_r 打印了 $answers 变量,并且它的编码也不正确,所以我认为问题出在教义方面。你怎么看?真正奇怪的是它对 id=1 工作得很好。请注意,我在 phpmyadmin 内部查看,文本也很好。

谢谢你。