问题标签 [jms-serializer]

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 投票
0 回答
1388 浏览

symfony - 根据 api 级别更改 JMS 序列化 JSON 标签名称

我正在使用 jms/serializer-bundle 和 Symfony,以及 YML 形式的序列化配置,将一些 Doctrine 对象序列化为 JSON。

现有的 API 意味着一些标签用下划线命名(例如“created_on”)

但我想为新的 API 版本整理一下,并在 camelCase 中为新的 API 调用返回响应。

我曾希望/认为我可以使用 JMS 序列化器“Until”和“Since”配置来引用我的实体属性两次,一次使用旧的 serialized_name,另一次使用新的

但显然这不起作用。我还尝试将“2.1”版本转换为 virtual_properties,并使用不同的组名,但我也无法让它工作。

如果我使用的是普通的 SerializerBuilder/SerializationContext 类,那么看起来我可以执行以下操作:

无论如何都要强迫一切都用驼峰式。

但我不是。我正在使用 jms_serializer 服务,依靠它的基础设施来支持我需要的序列化组,我看不到任何方式通过dependency_injection 来构建我自己的版本,它采用不同的命名策略,用于我的“新” API 响应。

有没有人有办法做到这一点?

0 投票
1 回答
1194 浏览

mongodb - 使用 JMS 序列化程序反序列化时,Gedmo Timestampable 总是更新引用

我在我的 Symfony2 项目中有一对一的关系,其中Questiona 引用了 a Video- 两者都有一个创建更新的 Gedmo\Timestampable行为,它基本上按预期工作。但是有点过分了:

反序列化Question附加的Video(仅作为 ID 以避免Video metadata中的其他更改)时,Video文档始终会在thecreated updatedfield上获得更新。这似乎不对。我可能理解为什么更新的字段会得到一个新的日期——即使对象本身实际上没有任何变化,但为什么创建

这是我的代码(简化):

课堂问题:

课堂视频:

有趣的是,Video在反序列化过程中没有对对象进行任何更改 -只有更新查询来设置视频的createdupdated字段。我还测试了Timestampable 的字段参数,以仅在其中一个字段获得时强制更新更新,但这似乎被完全忽略了。

这也是反序列化的 JSON 和相应的 MongoDB 查询:

查询:

0 投票
0 回答
1181 浏览

symfony - JMSSerializerBundle - 相同属性的多个序列化名称

我正在尝试执行以下操作:

我想在(反)序列化 xml 时使用一组序列化名称,而在对一个类的相同属性使用 json 时使用另一组?

我设法通过使用不同的配置文件手动执行此操作,然后使用序列化程序构建器手动加载它们:

是否可以使用 sf 容器中的 jms_serializer 服务做类似的事情?

有没有其他更智能/更简单的方法来实现这一点?

不能使用如下所示的重复属性和组:

0 投票
0 回答
156 浏览

jms-serializer - 更改 JMSSerializer 的 xml 格式

我有一个这样的数组:

通过将其序列化为 xml,我希望得到类似的东西:

但我得到:

如何以我上面描述的方式使用 JMSSerializer 获取 xml?我知道使用 Annotation 可以做到这一点,但我需要使用 php,所以我应该调用哪些方法来设置 xmlRoot 和 xmlValue 等?

0 投票
1 回答
552 浏览

php - 如何更改在 PreSerializeEvent 上调用实体的方法?

我有一个Category包含一堆Assets. Category 具有getCount返回其中资产数量的方法。

我使用 FosRestBundle 和 JMSSerializerBundle 将 Category 资产序列化为 json。现在,有一项功能更改引入了不同类型的资产,例如external和资产internal

我仍然想使用实体序列化,我认为通过创建一个PreSerializeEvent我实际上可以做到这一点。

然而,序列化器组件的文档通过将相关部分称为do something

我实际上应该如何在这里做某事?

我想要实现的是更改设置标志时调用的方法。序列化程序的正常情况应该是使用getCount方法,另一方面如果是序列化getExternalCountOnly,则使用 Category 对象上的方法。getCount

这实际上可以在这里做到还是我走错了路?

见我的CategorySerializationSubscriber

0 投票
1 回答
571 浏览

symfony - JMSSerializer 不序列化实体

我正在尝试使用 JmsSerializerBUndle 和 FOSRestBundle 获得序列化的实体响应。不幸的是,我无法这样做,因为我的响应有问题.. 我不确定系统是否识别该文件Entity.SearchEngine.yml

任何想法我怎么能找到它为什么不起作用?

休息动作(使用 FOSRestBundle):

我得到的回应是 { 0: { } }

0 投票
2 回答
4558 浏览

symfony - 原则 2:禁用延迟加载/代理生成。

使用 Doctrine 2,是否可以:

  • 从生成的代理类中排除属性?
  • 完全禁用延迟加载/代理生成?

我在序列化我的实体时遇到问题(使用 Symfony 和 JMS 序列化器)。我只想序列化我在查询中明确获取的关联实体。

fe Disable Doctrine 2 lazy loading when using JMS Serializer 中描述的解决方案?只是部分工作。当您拥有虚拟财产时:

在序列化过程中,关联的类仍然是通过代理加载的。

0 投票
1 回答
909 浏览

json - 使用 JSMSerializerBundle 反序列化多维 JSON API 响应

我使用 Symfony2/JSMSerializerBundle。

将平面 json 对象序列化为 PHP 对象效果很好。但我使用的 API 给出了多维 Json 响应:

}

作为反序列化的 PHP,我想要这样的东西:

)

谁有提示我如何做到这一点?

谢谢!

0 投票
1 回答
152 浏览

php - 强制 JMS 序列化器输出由特定字段键入的对象

我有一个实体Product与实体Property具有一对多关系。当我使用 JMS 序列化器序列化产品实例时,我得到以下 JSON 输出:

我尝试让序列化程序将属性集合序列化为一个对象,其中某个字段用作键。例如,名称字段。所需的输出是:

实现这一目标的最佳方法是什么?

0 投票
3 回答
5921 浏览

json - Symfony2 Doctrine2 反序列化和合并实体问题

我正在尝试将 json 反序列化为实体,然后合并实体。

我相信我过去曾做过这个工作,我会发送 ID 和我希望更新的任何字段。例如:

在我的数据库中:

然后我将反序列化以下 json 并合并实体

预期的结果是:

但是我得到以下信息:

就像我说的那样,我相信我在某个时候有这个工作,我不确定这是否与jms_serializeror相关em->merge

$customer->getFirst()在实体合并之前和之后返回 null