问题标签 [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.
php - 教义注释加载器失败
我正在尝试运行 JMSSerializer。我的简单代码
失败了
好的,但是如果我添加行
要手动触发自动加载器,它可以工作:
正如我所见,AnnotationRegistry 不使用自动加载器,它尝试使用一些自己的自动加载器。它看起来很丑,我该怎么做才能修复它?
symfony - JMS Serializer 使用抽象父类反序列化
我有一个抽象父(映射的超)类,它有几个具有不同属性的子类,我想反序列化它们。我使用 MongoDB 和 Doctrine ODM 存储数据,所以我还有一个鉴别器字段,它告诉教义使用哪个子类(并且还有一个自定义的“类型”属性在其他地方用于确定当前正在处理的类)。
在反序列化我的模型时,我收到一个异常,告诉我不可能创建抽象类的实例(当然) - 现在我想知道如何告诉 JMS Deserializer 它应该使用哪个继承的类(这就是我使用的原因例如自定义type
实例变量 - 因为我无法访问学说的鉴别器字段映射)。
我可以成功连接到preDeserializeEvent
- 所以也许可以在那里(或使用)制作一些开关/案例?
简而言之我的模型(抽象类):
子类之一
另一个测试是不使Module 类抽象并创建自定义静态方法
有任何想法吗?
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";}
symfony - 如何用依赖对象序列化 Symfony2 中的实体
我有一个 Product 实体和一个 ProductList 实体。
是否可以以 json 包含与该 ProductList 相关的 Product 对象的方式将 ProductList 对象序列化(和反序列化)为 json?
预期的输出是:
我正在使用 Symfony2 内置序列化程序和 JMS\Serializer 但我没有任何运气。
有什么办法可以做到这一点?
symfony - JMS 序列化程序通过继承反序列化学说实体
我有一个使用继承的 Doctrine 实体:
我也有一个包含内容实体集合的项目实体。当我使用 JMSSerializer 将这些实体序列化为 XML 时,我确实看到了一个 discr 列。
当我想反序列化 XML 时,我得到了预期的结果,但 Content 类除外。它们都是 \Namespace\To\Entity\Content 对象。这样我就无法将更改保存到数据库。
在上面的代码示例中,我已经尝试了@Discriminator注释来指定实体类型,但这不起作用。知道我怎样才能让它工作吗?我想我已经接近了,但我没有想法。
编辑
如果我在父类中进行以下更改:
至
而且我只添加 Text 元素使其正常工作,但添加其他元素(当然)会中断。
symfony - FOSRestBundle 的序列化程序使用继承的实体抛出递归错误
我正在开发一个继承抽象类的应用程序。这些抽象类有自己的序列化器映射,如下面的示例所示
和抽象类:
继承前一个类的类如下所示
抛出的错误是这样说的:
当然,我做错了什么,因为没有暴露实体,根据映射只有三个“已注册”实体字段,但我不知道。我花了几天时间试图弄清楚没有成功的错误是什么。
进行继承属性映射的正确方法是什么?
更新
用于使用 FOSRestBundle 序列化 JSON 的代码:
symfony - 具有已使用 JMSSerializer 反序列化的关联的持久性 Doctrine 实体
在成功将 json 字符串反序列化为具有关联的 Doctrine 实体之后。在持续存在时,Doctrine 总是将这些关联检测为“新实体”。如何仅通过 ID 更新关联,而不更改相关实体值(如果有任何更改)?
我的情况:
我有一些带有静态数据的数据库表。最简单的一种是用于存储单位。(我有一个名为 Unit 的学说实体)。表格是这样的:
然后,用户可以创建一个 Item,它还有一个名为 Unit 的服务器端学说实体。我使用客户端的backbone.js 模型,更新后它会发送到我的Symfony2 应用程序,如下所示:
现在,我使用 JMSSerializer 反序列化,一切正常,但我希望学说只更新关系的单元 ID,而不是整个单元。
当我坚持时,教义抱怨并告诉我他找到了一个“新的单位实体”(这不是我想要的)并告诉我persist
在教义实体中设置级联。但是如果我这样做并且有人修改了单位 json,那不会改变我的静态单位表吗?
例如:不良用户通过发送以下内容修改 Json:
我当然不希望这种情况发生。我只想将具有 id:1 的单元添加到项目中。
这种情况很简单,我可以通过 Id 获取单位,然后将其设置为实体,但在我的真实应用程序中,Item 实体要大得多,所以我想自动处理它。
有任何想法吗?
symfony - FOSRestBundle 和 JMSSerializer 运行时公开
我的 Symfony2 API 使用 FOSRestBundle 和 JMSSerializer,带有属性注释,但很多时候我不想公开每个属性。我知道 JMS 有排除组,但我不知道如何将它们包含在我的 Symfony 控制器中。应该有一种在动态基础上使用 PHP 的方法,但文档中似乎也缺少这种方法。
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 注释有什么关系吗?我应该使用某些注释来使其正常工作吗?