问题标签 [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 - 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 错误消息:
提前感谢您提供的任何帮助!
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”
怎么了?
php - JMSSerializer 预期的输入结束,但得到 T_NONE 类型的“/”
我正在使用 JMS 序列化和反序列化我的实体我有一个批处理来生成一个 json 文件和其他读取该文件
我的实体有一个字段 DateTime 如下
当实体被序列化时,结果是
但问题是当我要反序列化时我得到
注意:当我使用json_decode
内置函数时,返回一个 stdClass 没有问题
更新 1
好像不是这个字段,我删除了原来序列化的字段,还是报同样的错误。每个对象都在一行中序列化,每个对象由 PHP_EOL 分隔
这是数据样本people.json
所有字段均有效且数据类型为数字或字符串
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
php - 如何更改 FOSRestBundle/JMS 序列化程序中的字段值?
我在实体中有“图像”字段。但取决于行动,我想显示的不是原始图像,而是图像的预览(我在 LiipImagineBundle 中制作)。我能想象的一种解决方案:
但我不喜欢它,因为如果一个实体有很深的子实体,代码会很混乱。
如何正确执行?
mongodb - JMSSerializerBundle、MongoDB 和 XML 元数据
看来我整晚都在为此绞尽脑汁。每次我尝试序列化文档查询的结果时,都会收到bool(false)的结果。大概这意味着序列化失败(太好了!也许你愿意告诉我你为什么失败?不?不这么认为。)
我已经告诉了JMSSerializerBundle
我的FOSUserBundle
映射保存在哪里,例如:
我定义了一个非常简单的 XML 序列化元数据文件,例如Model.User.xml:
而且,在测试控制器中,我在尝试做任何更复杂的事情之前手动调用序列化程序,例如:
结果?总是bool(false)。
但是,如果我手动构造一个新User
对象,则序列化工作正常,例如:
有什么想法吗?我已经准备好为此失去理智了。
编辑:同样经过进一步思考,值得注意的是,我的序列化元数据看起来并没有得到尊重。如上所示,我只公开了用户名,但是当我在控制器中创建一个新用户名并对其进行序列化时,User
我看到的不仅仅是公开的用户名,我看到的是username
:、、、、、和enabled
locked
expired
roles
credentials_expired
。我怀疑我会看到每个字段,如果它有非空数据。
编辑(2):我已经看到对使用DoctrineObjectConstructor
默认对象构造函数的引用serializer
;并采取了此答案中确定的步骤,希望他们可以解决我的问题。唉,他们没有(看起来那个答案和问题更适合反序列化)并且bool(false)的结果仍然存在。
编辑(3):序列化元数据没有被提取的问题,似乎是由于混合auto_detection
和显式声明directories
,如我问过的另一个问题所示:JMSSerializerBundle 混合自动检测和显式目录?
php - JMSSerializerBundle 混合自动检测和显式目录?
是否可以auto_detection
用于某些捆绑包,同时通过指定第三方模型来覆盖它们的位置directories
?
在过去的几天里,我一直在使用JMSSerializerBundle试图理解它并让它与个人项目一起使用,它看起来没有任何方法可以使用auto_detection
以及指定directories
第三方元数据。
如果我写我的FOSUserBundle Model.User.yml
序列化数据,例如:
并将其放在指定的目录中,whileauto_detection
设置为 true,如下所示:
未提取序列化元数据。
但是,如果我将相同的元数据文件放在FOS/UserBundle/Resources/config/serializer下(在供应商包中)并将配置更改为:
序列化元数据被读取并正确应用。
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 扩展来解决它,更改了一些配置,但没有任何改变。
有谁知道会发生什么?
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”。如果合适,请有人创建它和/或删除此注释。
jms - FOSRestbundle、JMS Serializer 和 SonataMediaBundle 返回图像的公共 url
我正在尝试通过 FOSRestBundle 和 JMS Serializer 返回一个带有指向 Sonata\MediaBundle\Entity 的 ManyToOne 链接的 JSON 对象('Module')。我该怎么做呢?
这是我做的一个黑客,但不认为这是最好的做法。
谢谢你!
编辑 感谢 Tautrimas Pajarskas 和他提到的帖子。这是课程。