问题标签 [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 投票
1 回答
201 浏览

symfony - jmsserialize 没有以正确的方式反序列化 OneToOne 实体

我有两个实体:UserUserInfo

我正在尝试反序列化通过 JMSSerializer 及其 Doctrine 构造器发送的用户。UserInfo如果未指定,一切正常。从数据库加载用户并更新发送的字段:

通过发送:

我得到反序列化的是用户和用户信息的加载良好。

但是,如果我尝试发送这样的内容:

short_date_format已更新和序列化,但不会从数据库加载所有其他字段,将它们全部设置为null. 这不是我想要的行为。我怎样才能解决这个问题?

更新

我想如果我想正确地做,我最好修补一个“嵌套级别”。URL 可能类似于以下内容(FOSRestbundle 控制器的注释):

这样,我可以按照Ocramius 的建议来修补 userInfo 。谁能给我一些反馈?你认为这可能是一个好的/最佳实践来实现一个像样的补丁吗?

0 投票
1 回答
283 浏览

php - 反序列化嵌套的 xml 节点

我从一个格式如下的 api 得到一个 xml 响应:

我想让它反序列化为一个响应对象,定义为:

我已经能够使用下面的配置成功获取成功值和消息数组。是否可以使用帐户节点列表来获取帐户属性的水合物?

0 投票
2 回答
1353 浏览

symfony - 使用 JMSSerializerBundle 序列化指定字段

我正在构建一个 REST API,我想让我的用户可以选择通过 URL 参数返回哪些字段,例如

有没有办法用 JMSSerializerBundle 完成这样的功能?

// 编辑

请注意嵌入的集合

0 投票
1 回答
2566 浏览

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 有

但它是

0 投票
2 回答
150 浏览

php - FosRestBundle:动态虚拟属性

在 FOSRestBundle : Annotations 中,我想使用多个带有动态名称的@VirtualProperty,因为我从数据库中获取属性名称(属性数量未知)

其中 property_name1 & property_name2 .. property_name3 .. etc 是动态的,具有无穷大的数字

我想将它们设置为虚拟属性,每个属性都有一个字符串值。

我不想将它们设置为具有一个属性的数组。

如果没有办法做到这一点,请告诉我是否可以从控制器执行相同的任务?

0 投票
1 回答
1701 浏览

php - JMSSerializer:将空的 DateTime XML 元素反序列化为 PHP“null”对象

我正在处理 XML 文件的反序列​​化。某些元素可能不包含任何数据,因此我尝试将以下 XML 元素 ( OfferDate) 反序列化为null对象而不是\DateTime对象:

...但我收到以下错误:

如果 XML 文件包含例如它会起作用2016-09-25T18:58:55OfferDate因为有一些数据......但是因为也有可能存在没有任何数据的元素,所以我也必须涉及这种情况。

我将 XML 反序列化为对象的 YML 映射:

我的Product班级:

最后是我的反序列化:

./tests/AppBundle/Domain/Model/ProductTest.php:35如上所示,错误等于行$productCollection = $serializer->deserialize($xml, ProductCollection::class, 'xml');

为了澄清我为什么反序列化为ProductCollectionproduct.xml包含<Products>元素所在的<Product>元素。然后ProductCollection包含一个调用的方法,该方法返回一个包含反序列化对象getProducts()的数组。Product

有没有办法将OfferDate没有任何数据的元素反序列化为null对象?如果是这样,怎么办?

0 投票
1 回答
329 浏览

php - 使用 JMS 序列化器反序列化 XML,得到空对象

我正在尝试反序列化以下 XML:

我做了以下实体:

这是第二个实体:

然后我在控制器中使用以下代码进行序列化:

只有对象不断变空?

0 投票
2 回答
294 浏览

php - 分组属性的 JMSSerializer 交集

我有以下实体:

我想让序列化程序为两个组中存在的属性生成输出,所以用更简单的话来说,我需要分组属性的交集。

上面的代码应该只输出变量$varA,因为它定义了两个组。

如何实现?我唯一想到的是扩展来自 JMSSerializer 的 GroupExclusionStategy 但也许有更好的方法?

0 投票
0 回答
601 浏览

symfony - Symfony2/FOSRestbundle 忽略序列化组(用于结果数组)

当我获取一个实体时,序列化组对我来说很好,但是当我尝试获取结果数组时,我得到了空的结果集。

我这样做:

但也尝试在视图对象上手动设置上下文,情况相同。当我不设置组或设置为“默认”时:

我得到了正确的序列化结果集。

我的实体:

和我的控制器:

PS。

0 投票
1 回答
50 浏览

doctrine-orm - 如何在 ObjectConstructor 中考虑注释组

JMSSerializer 带有一个 Doctrine 对象构造器来完成它的工作,但是想象一个具有两个属性的实体形成一个主键:

反序列化时使用排除一个属性键group=1。客户端可能仍会同时发送emailusernameemail不过不应该考虑。

不幸的是,如果您在正文中传递两个属性,DoctrineObjectConstructor则不会检查反序列化是否排除了某些内容,因此它会尝试根据两个值从数据库中加载实体:

我想做的是考虑到我的注释组,以便fallbackConstructor在缺少形成标识符的某些属性的情况下使用。

作为初学者,这是一个很好的观点:我创​​建了自己的服务,通过传递annotationDriver. 然后,如果形成标识符的属性与实际组无关:

我可以回退到fallbackConstructor,就好像我没有通过 body 中的那个属性一样

……没那么快!我的实体User扩展了UserBase我所有标识符所在的位置,因此我应该考虑层次结构,可能以通用方式。

有什么提示吗?