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

php - JMS 序列化程序无法序列化:无法访问私有属性

我正在尝试使用 JMS Serializer 包将 Doctrine2 实体序列化为 JSON。我已经设置好了所有东西,但是当我尝试将某些内容序列化为 JSON 时,我收到以下错误:

Fatal error: Cannot access private property Snow\FrontBundle\Entity\District::$id in E:\School\SocialGEO Augustus\Coding\socialgeo-php\vendor\jms\metadata\src\Metadata\PropertyMetadata.php on line 46

这是我的控制器代码:

最后,这是我的区实体:

有谁知道为什么会这样?如果我在我的实体中将所有内容都设置为公开,我似乎可以走得更远,但有些事情告诉我我不应该这样做。如果这样做,我会收到 Symfony2 错误消息:

提前感谢您提供的任何帮助!

0 投票
1 回答
678 浏览

doctrine-odm - 在 Symfony2.3.​​4 和 ODM 中得到 JMSSerializerBundle 的错误

错误是 ServiceNotFoundException:服务“jms_serializer.metadata_driver”依赖于不存在的服务“原则”。

我在 composer.json 中的配置:

“jms/serializer-bundle”:“dev-master”,“jms/di-extra-bundle”:“dev-master”

怎么了?

0 投票
2 回答
3698 浏览

php - JMSSerializer 预期的输入结束,但得到 T_NONE 类型的“/”

我正在使用 JMS 序列化和反序列化我的实体我有一个批处理来生成一个 json 文件和其他读取该文件

我的实体有一个字段 DateTime 如下

当实体被序列化时,结果是

但问题是当我要反序列化时我得到

注意:当我使用json_decode内置函数时,返回一个 stdClass 没有问题


更新 1

好像不是这个字段,我删除了原来序列化的字段,还是报同样的错误。每个对象都在一行中序列化,每个对象由 PHP_EOL 分隔

这是数据样本people.json

所有字段均有效且数据类型为数字或字符串

0 投票
1 回答
2671 浏览

symfony - json_encode() recursion detected Symfony2 JMSSerializerBundle

I'm currently trying to expose groups for an ajax call. If I user @Expose on each field it works like a charm but if I replace it with @Groups it throws the error recursion detected in JsonSerializationVisitor.php on line 29 and the results in my ajax return has a 'null' value.

This is my call to the serializer =>

And this is the entity used

0 投票
3 回答
2557 浏览

php - 如何更改 FOSRestBundle/JMS 序列化程序中的字段值?

我在实体中有“图像”字段。但取决于行动,我想显示的不是原始图像,而是图像的预览(我在 LiipImagineBundle 中制作)。我能想象的一种解决方案:

但我不喜欢它,因为如果一个实体有很深的子实体,代码会很混乱。

如何正确执行?

0 投票
0 回答
709 浏览

mongodb - JMSSerializerBundle、MongoDB 和 XML 元数据

看来我整晚都在为此绞尽脑汁。每次我尝试序列化文档查询的结果时,都会收到bool(false)的结果。大概这意味着序列化失败(太好了!也许你愿意告诉我你为什么失败?不?不这么认为。

我已经告诉了JMSSerializerBundle我的FOSUserBundle映射保存在哪里,例如:

我定义了一个非常简单的 XML 序列化元数据文件,例如Model.User.xml

而且,在测试控制器中,我在尝试做任何更复杂的事情之前手动调用序列化程序,例如:

结果?总是bool(false)

但是,如果我手动构造一个新User对象,则序列化工作正常,例如:

有什么想法吗?我已经准备好为此失去理智了。

编辑:同样经过进一步思考,值得注意的是,我的序列化元数据看起来并没有得到尊重。如上所示,我只公开了用户名,但是当我在控制器中创建一个新用户名并对其进行序列化时,User我看到的不仅仅是公开的用户名,我看到的是username:、、、、、和enabledlockedexpiredrolescredentials_expired。我怀疑我会看到每个字段,如果它有非空数据。

编辑(2):我已经看到对使用DoctrineObjectConstructor默认对象构造函数的引用serializer;并采取了此答案中确定的步骤,希望他们可以解决我的问题。唉,他们没有(看起来那个答案和问题更适合反序列化)并且bool(false)的结果仍然存在。

编辑(3):序列化元数据没有被提取的问题,似乎是由于混合auto_detection和显式声明directories,如我问过的另一个问题所示:JMSSerializerBundle 混合自动检测和显式目录?

0 投票
2 回答
2602 浏览

php - JMSSerializerBundle 混合自动检测和显式目录?

是否可以auto_detection用于某些捆绑包,同时通过指定第三方模型来覆盖它们的位置directories

在过去的几天里,我一直在使用JMSSerializerBundle试图理解它并让它与个人项目一起使用,它看起来没有任何方法可以使用auto_detection以及指定directories第三方元数据。

如果我写我的FOSUserBundle Model.User.yml序列化数据,例如:

并将其放在指定的目录中,whileauto_detection设置为 true,如下所示:

未提取序列化元数据。

但是,如果我将相同的元数据文件放在FOS/UserBundle/Resources/config/serializer下(在供应商包中)并将配置更改为:

序列化元数据被读取并正确应用。

0 投票
1 回答
3193 浏览

mongodb - 序列化数据 MongoDB JMSSerializer 不支持资源

我正在尝试开发一个 API(基于 DoctrineMongoDBBundle 和 FOSRestBundle),它将所有空洞数据存储在 MongoDB 中,恢复它,并使用 FOSRest 显示它。

当我尝试显示存储在数据库中的对象列表时,这就是我得到的:

"message": "序列化数据不支持资源。路径:Monolog\Handler\StreamHandler -> Symfony\Bridge\Monolog\Logger -> Doctrine\Bundle\MongoDBBundle\Logger\Logger -> Doctrine\Bundle\MongoDBBundle\Logger\ AggregateLogger -> Doctrine\ODM\MongoDB\Configuration -> Doctrine\MongoDB\Connection -> Doctrine\ODM\MongoDB\LoggableCursor", "class": "JMS\Serializer\Exception\RuntimeException",

我的 FOS 的 config.yml 是这样的:

那是我的控制器:

我试图返回一个格式正确的数组,并且没有显示错误,以及如果我将所有服务对象加入到一个数组中。

我尝试使用 PECL 安装 Mongo PHP 扩展来解决它,更改了一些配置,但没有任何改变。

有谁知道会发生什么?

0 投票
1 回答
1152 浏览

php - JMS 序列化器注解

我正在使用 Doctrine2 和JMS Serializer,但是序列化程序抛出了一个奇怪的错误:

AnnotationException:[Semantical Error] 类“Doctrine\ORM\Mapping\PrePersist”未使用@Annotation 进行注释。你确定这个类可以用作注释吗?如果是这样,那么您需要在“Doctrine\ORM\Mapping\PrePersist”的类文档注释中添加@Annotation。如果确实没有注解,则需要在方法User\User::prePersist()的类文档注释中添加@IgnoreAnnotation("ORM\PrePersist")。

当我尝试序列化实体对象时会发生这种情况。这些是实体类的相关位:

我打开Doctrine\ORM\Mapping\PrePersist@Annotation. 所以这个错误似乎在 JMS 方面,而不是在 Doctrine2 方面。

这可能是什么原因造成的?

注意:在这种情况下,正确的标签应该是“jmsserializer”,而不是“jmsserializerbundle”。如果合适,请有人创建它和/或删除此注释。

0 投票
1 回答
1689 浏览

jms - FOSRestbundle、JMS Serializer 和 SonataMediaBundle 返回图像的公共 url

我正在尝试通过 FOSRestBundle 和 JMS Serializer 返回一个带有指向 Sonata\MediaBundle\Entity 的 ManyToOne 链接的 JSON 对象('Module')。我该怎么做呢?

这是我做的一个黑客,但不认为这是最好的做法。

谢谢你!

编辑 感谢 Tautrimas Pajarskas 和他提到的帖子。这是课程。