问题标签 [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 - jmsserialize 没有以正确的方式反序列化 OneToOne 实体
我有两个实体:User
和UserInfo
:
我正在尝试反序列化通过 JMSSerializer 及其 Doctrine 构造器发送的用户。UserInfo
如果未指定,一切正常。从数据库加载用户并更新发送的字段:
通过发送:
我得到反序列化的是用户和用户信息的加载良好。
但是,如果我尝试发送这样的内容:
short_date_format
已更新和序列化,但不会从数据库加载所有其他字段,将它们全部设置为null
. 这不是我想要的行为。我怎样才能解决这个问题?
更新
我想如果我想正确地做,我最好修补一个“嵌套级别”。URL 可能类似于以下内容(FOSRestbundle 控制器的注释):
这样,我可以按照Ocramius 的建议来修补 userInfo 。谁能给我一些反馈?你认为这可能是一个好的/最佳实践来实现一个像样的补丁吗?
php - 反序列化嵌套的 xml 节点
我从一个格式如下的 api 得到一个 xml 响应:
我想让它反序列化为一个响应对象,定义为:
我已经能够使用下面的配置成功获取成功值和消息数组。是否可以使用帐户节点列表来获取帐户属性的水合物?
symfony - 使用 JMSSerializerBundle 序列化指定字段
我正在构建一个 REST API,我想让我的用户可以选择通过 URL 参数返回哪些字段,例如
有没有办法用 JMSSerializerBundle 完成这样的功能?
// 编辑
请注意嵌入的集合
php - 使用 Doctrine 和 JMSSerializer 注释序列化对象数组
我有一个模型
在 DB 中,它的存储方式类似于文本 '[{"x":1, "y":1} ...]'
在控制器中我有
所以我得到 ReflectionProperty::getValue() 期望参数 1 是对象,给定数组
在 ...vendor/jms/metadata/src/Metadata/PropertyMetadata.php:51
如果只是为了得到结果,可以通过使用虚拟属性来解决
但是我需要从 POST 以 JSON 形式接收这些点,所以到目前为止我发现的唯一方法是类似于 https://github.com/sonata-project/sonata-doctrine-extensions的 Doctrine 自定义类型
唯一不同的是,在 convertToPHPValue 方法中,我添加了额外的类型转换来接收对象而不是 assoc 数组:
有没有更干净的解决方案,而不添加自定义 Doctrine 序列化?
如果只有这个 ...vendor/jms/metadata/src/Metadata/PropertyMetadata.php:51 有
但它是
php - FosRestBundle:动态虚拟属性
在 FOSRestBundle : Annotations 中,我想使用多个带有动态名称的@VirtualProperty,因为我从数据库中获取属性名称(属性数量未知)
其中 property_name1 & property_name2 .. property_name3 .. etc 是动态的,具有无穷大的数字
我想将它们设置为虚拟属性,每个属性都有一个字符串值。
我不想将它们设置为具有一个属性的数组。
如果没有办法做到这一点,请告诉我是否可以从控制器执行相同的任务?
php - JMSSerializer:将空的 DateTime XML 元素反序列化为 PHP“null”对象
我正在处理 XML 文件的反序列化。某些元素可能不包含任何数据,因此我尝试将以下 XML 元素 ( OfferDate
) 反序列化为null
对象而不是\DateTime
对象:
...但我收到以下错误:
如果 XML 文件包含例如它会起作用2016-09-25T18:58:55
,OfferDate
因为有一些数据......但是因为也有可能存在没有任何数据的元素,所以我也必须涉及这种情况。
我将 XML 反序列化为对象的 YML 映射:
我的Product
班级:
最后是我的反序列化:
./tests/AppBundle/Domain/Model/ProductTest.php:35
如上所示,错误等于行$productCollection = $serializer->deserialize($xml, ProductCollection::class, 'xml');
。
为了澄清我为什么反序列化为
ProductCollection
:product.xml
包含<Products>
元素所在的<Product>
元素。然后ProductCollection
包含一个调用的方法,该方法返回一个包含反序列化对象getProducts()
的数组。Product
有没有办法将OfferDate
没有任何数据的元素反序列化为null
对象?如果是这样,怎么办?
php - 使用 JMS 序列化器反序列化 XML,得到空对象
我正在尝试反序列化以下 XML:
我做了以下实体:
这是第二个实体:
然后我在控制器中使用以下代码进行序列化:
只有对象不断变空?
php - 分组属性的 JMSSerializer 交集
我有以下实体:
我想让序列化程序为两个组中存在的属性生成输出,所以用更简单的话来说,我需要分组属性的交集。
上面的代码应该只输出变量$varA
,因为它定义了两个组。
如何实现?我唯一想到的是扩展来自 JMSSerializer 的 GroupExclusionStategy 但也许有更好的方法?
symfony - Symfony2/FOSRestbundle 忽略序列化组(用于结果数组)
当我获取一个实体时,序列化组对我来说很好,但是当我尝试获取结果数组时,我得到了空的结果集。
我这样做:
但也尝试在视图对象上手动设置上下文,情况相同。当我不设置组或设置为“默认”时:
我得到了正确的序列化结果集。
我的实体:
和我的控制器:
PS。
doctrine-orm - 如何在 ObjectConstructor 中考虑注释组
JMSSerializer 带有一个 Doctrine 对象构造器来完成它的工作,但是想象一个具有两个属性的实体形成一个主键:
反序列化时使用排除一个属性键group=1
。客户端可能仍会同时发送email
和username
。email
不过不应该考虑。
不幸的是,如果您在正文中传递两个属性,DoctrineObjectConstructor
则不会检查反序列化是否排除了某些内容,因此它会尝试根据两个值从数据库中加载实体:
我想做的是考虑到我的注释组,以便fallbackConstructor
在缺少形成标识符的某些属性的情况下使用。
作为初学者,这是一个很好的观点:我创建了自己的服务,通过传递annotationDriver
. 然后,如果形成标识符的属性与实际组无关:
我可以回退到fallbackConstructor
,就好像我没有通过 body 中的那个属性一样
……没那么快!我的实体User
扩展了UserBase
我所有标识符所在的位置,因此我应该考虑层次结构,可能以通用方式。
有什么提示吗?