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

php - 教义注释加载器失败

我正在尝试运行 JMSSerializer。我的简单代码

失败了

好的,但是如果我添加行

要手动触发自动加载器,它可以工作:

正如我所见,AnnotationRegistry 不使用自动加载器,它尝试使用一些自己的自动加载器。它看起来很丑,我该怎么做才能修复它?

0 投票
2 回答
147 浏览

php - JMSSerializationBundle 无法基于组对属性进行序列化

我正在尝试根据我在 Product 类中指定的组进行序列化。完整的产品类别可以在这里看到。这是我按照此处文档中的示例使用的代码:

所以$param上面本质上是一个 Product 对象数组。

但是,由于某种原因,这仍然会输出我不想要的所有产品属性(即:属于其他组而不是“市场”的属性)。例如属性“描述”。我已将描述标记为“详细信息”组,但为什么当我询问“市场”组时它仍作为响应的一部分返回?

0 投票
1 回答
8804 浏览

symfony - JMS Serializer 使用抽象父类反序列化

我有一个抽象父(映射的超)类,它有几个具有不同属性的子类,我想反序列化它们。我使用 MongoDB 和 Doctrine ODM 存储数据,所以我还有一个鉴别器字段,它告诉教义使用哪个子类(并且还有一个自定义的“类型”属性在其他地方用于确定当前正在处理的类)。

在反序列化我的模型时,我收到一个异常,告诉我不可能创建抽象类的实例(当然) - 现在我想知道如何告诉 JMS Deserializer 它应该使用哪个继承的类(这就是我使用的原因例如自定义type实例变量 - 因为我无法访问学说的鉴别器字段映射)。

我可以成功连接到preDeserializeEvent- 所以也许可以在那里(或使用)制作一些开关/案例?

简而言之我的模型(抽象类):

子类之一

另一个测试是不使Module 类抽象并创建自定义静态方法

有任何想法吗?

0 投票
2 回答
2614 浏览

json - 在实体上使用 JMSSerializerBundle 序列化对象属性

当我使用 jmsserializerbundle 序列化我的对象时,我得到了正确的 JSON 对象,但一个属性为空(它是对象类型),该属性的定义如下所示:

但即使这个实体上有一个对象,序列化程序也会像这样输出它:

{ "id": 10, "search_query_params": {}, "created": "2013-07-02T10:31:02+0200" },

只是一个空对象,with 不是真的。这是 DB 中 searchQueryParams 的值:

O:8:"stdClass":2:{s:4:"name";s:8:"Greacja2";s:10:"price_from";s:4:"2000";}

0 投票
1 回答
1134 浏览

symfony - 如何用依赖对象序列化 Symfony2 中的实体

我有一个 Product 实体和一个 ProductList 实体。

是否可以以 json 包含与该 ProductList 相关的 Product 对象的方式将 ProductList 对象序列化(和反序列化)为 json?

预期的输出是:

我正在使用 Symfony2 内置序列化程序和 JMS\Serializer 但我没有任何运气。

有什么办法可以做到这一点?

0 投票
1 回答
4029 浏览

symfony - JMS 序列化程序通过继承反序列化学说实体

我有一个使用继承的 Doctrine 实体:

我也有一个包含内容实体集合的项目实体。当我使用 JMSSerializer 将这些实体序列化为 XML 时,我确实看到了一个 discr 列。

当我想反序列化 XML 时,我得到了预期的结果,但 Content 类除外。它们都是 \Namespace\To\Entity\Content 对象。这样我就无法将更改保存到数据库。

在上面的代码示例中,我已经尝试了@Discriminator注释来指定实体类型,但这不起作用。知道我怎样才能让它工作吗?我想我已经接近了,但我没有想法。

编辑

如果我在父类中进行以下更改:

而且我只添加 Text 元素使其正常工作,但添加其他元素(当然)会中断。

0 投票
1 回答
1177 浏览

symfony - FOSRestBundle 的序列化程序使用继承的实体抛出递归错误

我正在开发一个继承抽象类的应用程序。这些抽象类有自己的序列化器映射,如下面的示例所示

和抽象类:

继承前一个类的类如下所示

抛出的错误是这样说的:

当然,我做错了什么,因为没有暴露实体,根据映射只有三个“已注册”实体字段,但我不知道。我花了几天时间试图弄清楚没有成功的错误是什么。

进行继承属性映射的正确方法是什么?

更新

用于使用 FOSRestBundle 序列化 JSON 的代码:

0 投票
1 回答
959 浏览

symfony - 具有已使用 JMSSerializer 反序列化的关联的持久性 Doctrine 实体

在成功将 json 字符串反序列化为具有关联的 Doctrine 实体之后。在持续存在时,Doctrine 总是将这些关联检测为“新实体”。如何仅通过 ID 更新关联,而不更改相关实体值(如果有任何更改)?

我的情况:

我有一些带有静态数据的数据库表。最简单的一种是用于存储单位。(我有一个名为 Unit 的学说实体)。表格是这样的:

然后,用户可以创建一个 Item,它还有一个名为 Unit 的服务器端学说实体。我使用客户端的backbone.js 模型,更新后它会发送到我的Symfony2 应用程序,如下所示:

现在,我使用 JMSSerializer 反序列化,一切正常,但我希望学说只更新关系的单元 ID,而不是整个单元。

当我坚持时,教义抱怨并告诉我他找到了一个“新的单位实体”(这不是我想要的)并告诉我persist在教义实体中设置级联。但是如果我这样做并且有人修改了单位 json,那不会改变我的静态单位表吗?

例如:不良用户通过发送以下内容修改 Json:

我当然不希望这种情况发生。我只想将具有 id:1 的单元添加到项目中。

这种情况很简单,我可以通过 Id 获取单位,然后将其设置为实体,但在我的真实应用程序中,Item 实体要大得多,所以我想自动处理它。

有任何想法吗?

0 投票
2 回答
3142 浏览

symfony - FOSRestBundle 和 JMSSerializer 运行时公开

我的 Symfony2 API 使用 FOSRestBundle 和 JMSSerializer,带有属性注释,但很多时候我不想公开每个属性。我知道 JMS 有排除组,但我不知道如何将它们包含在我的 Symfony 控制器中。应该有一种在动态基础上使用 PHP 的方法,但文档中似乎也缺少这种方法。

0 投票
1 回答
933 浏览

doctrine-orm - 使用 JMS 序列化序列化持久集合

我一直在使用 "jms/serializer": "0.13.*@dev" 来序列化我的对象。

我在 Zend Framework (2) 和 Doctrine 项目中使用它。

这是我的代码:

但我收到此错误:

序列化数据不支持资源。路径:MyApp\Entity\FOO -> Doctrine\ORM\PersistentCollection -> MyApp\Entity\Product -> Doctrine\ORM\PersistentCollection -> DoctrineORMModule\Proxy__CG__\MyApp\MyApp\Brand

显然你不能序列化持久性集合。

我搜索了一下,发现了这个Symfony 相关问题。但是如何在独立的 Serializer 库中解决这个问题呢?

非常感谢。


编辑

这与 JMS 注释有什么关系吗?我应该使用某些注释来使其正常工作吗?