问题标签 [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.
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 响应。
有没有人有办法做到这一点?
mongodb - 使用 JMS 序列化程序反序列化时,Gedmo Timestampable 总是更新引用
我在我的 Symfony2 项目中有一对一的关系,其中Question
a 引用了 a Video
- 两者都有一个创建和更新的 Gedmo\Timestampable行为,它基本上按预期工作。但是有点过分了:
反序列化Question
附加的Video
(仅作为 ID 以避免Video metadata中的其他更改)时,Video
文档始终会在thecreated
和updated
field上获得更新。这似乎不对。我可能理解为什么更新的字段会得到一个新的日期——即使对象本身实际上没有任何变化,但为什么创建?
这是我的代码(简化):
课堂问题:
课堂视频:
有趣的是,Video
在反序列化过程中没有对对象进行任何更改 -只有更新查询来设置视频的created
和updated
字段。我还测试了Timestampable 的字段参数,以仅在其中一个字段获得时强制更新更新,但这似乎被完全忽略了。
这也是反序列化的 JSON 和相应的 MongoDB 查询:
查询:
symfony - JMSSerializerBundle - 相同属性的多个序列化名称
我正在尝试执行以下操作:
我想在(反)序列化 xml 时使用一组序列化名称,而在对一个类的相同属性使用 json 时使用另一组?
我设法通过使用不同的配置文件手动执行此操作,然后使用序列化程序构建器手动加载它们:
是否可以使用 sf 容器中的 jms_serializer 服务做类似的事情?
有没有其他更智能/更简单的方法来实现这一点?
不能使用如下所示的重复属性和组:
jms-serializer - 更改 JMSSerializer 的 xml 格式
我有一个这样的数组:
通过将其序列化为 xml,我希望得到类似的东西:
但我得到:
如何以我上面描述的方式使用 JMSSerializer 获取 xml?我知道使用 Annotation 可以做到这一点,但我需要使用 php,所以我应该调用哪些方法来设置 xmlRoot 和 xmlValue 等?
php - 如何更改在 PreSerializeEvent 上调用实体的方法?
我有一个Category
包含一堆Assets
. Category 具有getCount
返回其中资产数量的方法。
我使用 FosRestBundle 和 JMSSerializerBundle 将 Category 资产序列化为 json。现在,有一项功能更改引入了不同类型的资产,例如external
和资产internal
。
我仍然想使用实体序列化,我认为通过创建一个PreSerializeEvent
我实际上可以做到这一点。
然而,序列化器组件的文档通过将相关部分称为do something
我实际上应该如何在这里做某事?
我想要实现的是更改设置标志时调用的方法。序列化程序的正常情况应该是使用getCount
方法,另一方面如果是序列化getExternalCountOnly
,则使用 Category 对象上的方法。getCount
这实际上可以在这里做到还是我走错了路?
见我的CategorySerializationSubscriber
:
symfony - JMSSerializer 不序列化实体
我正在尝试使用 JmsSerializerBUndle 和 FOSRestBundle 获得序列化的实体响应。不幸的是,我无法这样做,因为我的响应有问题.. 我不确定系统是否识别该文件Entity.SearchEngine.yml
任何想法我怎么能找到它为什么不起作用?
休息动作(使用 FOSRestBundle):
我得到的回应是
{
0: { }
}
symfony - 原则 2:禁用延迟加载/代理生成。
使用 Doctrine 2,是否可以:
- 从生成的代理类中排除属性?
- 完全禁用延迟加载/代理生成?
我在序列化我的实体时遇到问题(使用 Symfony 和 JMS 序列化器)。我只想序列化我在查询中明确获取的关联实体。
fe Disable Doctrine 2 lazy loading when using JMS Serializer 中描述的解决方案?只是部分工作。当您拥有虚拟财产时:
在序列化过程中,关联的类仍然是通过代理加载的。
json - 使用 JSMSerializerBundle 反序列化多维 JSON API 响应
我使用 Symfony2/JSMSerializerBundle。
将平面 json 对象序列化为 PHP 对象效果很好。但我使用的 API 给出了多维 Json 响应:
}
作为反序列化的 PHP,我想要这样的东西:
)
谁有提示我如何做到这一点?
谢谢!
php - 强制 JMS 序列化器输出由特定字段键入的对象
我有一个实体Product与实体Property具有一对多关系。当我使用 JMS 序列化器序列化产品实例时,我得到以下 JSON 输出:
我尝试让序列化程序将属性集合序列化为一个对象,其中某个字段用作键。例如,名称字段。所需的输出是:
实现这一目标的最佳方法是什么?
json - Symfony2 Doctrine2 反序列化和合并实体问题
我正在尝试将 json 反序列化为实体,然后合并实体。
我相信我过去曾做过这个工作,我会发送 ID 和我希望更新的任何字段。例如:
在我的数据库中:
然后我将反序列化以下 json 并合并实体
预期的结果是:
但是我得到以下信息:
就像我说的那样,我相信我在某个时候有这个工作,我不确定这是否与jms_serializer
or相关em->merge
。
$customer->getFirst()
在实体合并之前和之后返回 null