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

symfony - 如何使用 setter 将 JSON 反序列化为实体

我正在编写一个Controller接受代表我必须创建的用户的 JSON。我试图让控制器尽可能轻,因此我让FOSRestBundle反序列化 JSON 到我想要保存的正确实体中:

是的,一切顺利!除了caviat:我想加密密码,并且User' 实体在其setPassword方法中执行此操作。有没有办法自动完成?还是我应该User::setPassword在我编写的处理程序中自己调用?

0 投票
0 回答
158 浏览

php - 使用 JSM Serializer 序列化为 JSON 'primitives'

也许我以错误的方式处理它,但我希望能够将一个对象(代表一个基元)序列化为 JSON“基元”。在 JsonSerializable Interface 和 json_encode 的帮助下,这很容易,但我希望能够在 JSM Serializer 的帮助下概括这一点。

我使用了内联注释,但是无论我在序列化对象时尝试什么,都必须使用表示对象的字符串?这个对吗?如果可能的话,我怎么能做到这一点?

例如,我也有更复杂的对象来表示数组/集合

0 投票
1 回答
515 浏览

symfony - JMSSerializerBundle 不是 Json 上的整数值

我正在使用 JMSSerializerBundle 对 API 上的 json 进行反序列化,所以我想检查这些值是否正确,所以我使用 Symfony 注释验证,但是当在整数值时,json 有一个字符串值 JMSSerializerBundle 将默认值设置为 0。

当不是整数时,是否有任何方法返回有关此字段或另一个整数字段的错误。

我想要一个错误

0 投票
2 回答
2661 浏览

symfony - FOSRestBundle 没有考虑我的 URL 中的格式

我想考虑我的 URL 中的格式扩展名,以便它为_format参数提供最高优先级。我的配置如下:

我的 HTTP 请求如下:

这会产生如下异常:

有趣的部分是:

所以我尝试像这样更改我的 HTTP 请求:

它有效!我猜我的扩展完全被忽略了。我的配置有问题吗?是不是因为JMSSerializer配置错误?这是我的注释:

0 投票
0 回答
255 浏览

symfony - 覆盖或扩展 Symfony2 中注释定义的序列化程序组

我在 Symphony 2 项目中使用 JMS 序列化程序,并且我正在使用 Annotations 中定义的序列化程序组。

对于一种特定情况,我想根据运行时参数更改或至少添加一组(即检查用户授权)。

我还使用注释不直接与序列化程序交互,我的方法只是返回对象。

这可能吗?我在文档中没有发现任何东西让我相信我可以覆盖注释。

0 投票
1 回答
1047 浏览

php - JMSserializer 反序列化相关的 Doctrine Entity

我有这样的json:

数据库中存在共同国家的两个相关项目。如果我使用 JMSserializer 反序列化,它会创建 COUNTRY entity 的两个不同实例

当您应用与学说合并时,请将国家/地区正确设置为“某事”,而不是“某事 2”。所以保存后的结果是:

对于 Doctrine,有两个不同的实体,称为 Country,它们是分离的。教义附加第一个并正确保存它,但不是第二个。

当您合并具有相同相关实体 id 的集合时,这只会发生在关系 ManyToOne 上。如果你保存国家1和国家2,没有重复的国家,所以保存财产。

有什么解决办法吗?

0 投票
1 回答
2107 浏览

serialization - JMS 序列化程序:关联实体的排除策略被忽略

使用Symfony2 的 JMS 序列化器我得到了 2 个类。

这是类人:

和 FOS 用户:

然后我打电话:

$serializedResponse = $serializer->serialize( $persons, 'json', SerializationContext::create()->enableMaxDepthChecks() );

我期望得到的是每个人都被序列化,并且在它的 fosuser 字段中,只有 FOSUser 的 id 暴露。

然而,它暴露$groups了 FOSUser 对象中的每个字段(例如 ),这与其 ExclusionPolicy 相矛盾。

注意:FOSUser 中的任何 ADDED 字段(例如,BaseUser 中不存在的“$fullname”)都会被注释 @Serializer\Exclude 和/或 @Serializer\ExclusionPolicy("all") 隐藏

注意2:如果我将 @Serializer\Exclude 标记添加到 FOSUser 中的 OVERRIDING 字段(例如 $groups),它不会隐藏它。

0 投票
1 回答
1449 浏览

php - JMS 序列化器无法将对象序列化为数组

我有一个仅用作数组容器的类。

我会使用 JMS\Serializer 将此类序列化为仅包含它的数组。为此,我使用了一个特殊的处理函数:

现在如果我跑

我的期望是我得到

但我得到的是null

我已经在这里报告了这个问题,但是有人知道这个问题的解决方法吗?我应该如何解决这个问题(不使用@HandlerCallback或其他想法),以便获得预期的结果?

谢谢!

0 投票
1 回答
202 浏览

symfony - 无法覆盖 SonataUserBundle 中的序列化程序配置以隐藏属性

我正在使用SonataUserBundleJMSSerializerBundle,我想隐藏序列化对象的令牌和其他属性。

我想在 SonataUserBundle 中覆盖的文件Resources /config/serializer/Model.User.xml

这是我的配置:

应用程序/config.yml

jms_serializer: metadata: auto_detection: true directories: - { path: %kernel.root_dir%/Resources/SoantaUserBundle/serializer, namespace_prefix: 'Sonata\UserBundle' } - { path: %kernel.root_dir%/Resources/FOSUserBundle/serializer, namespace_prefix: 'FOS\UserBundle' }

app/Resources/SonataUserBundle/serializer我尝试了 2 个文件。

模型.用户.xml

<?xml version="1.0" encoding="UTF-8"?> <serializer> <class name="Sonata\UserBundle\Model\User" exclusion-policy="all" xml-root-name="user"> <property name="token" type="string" expose="false" since-version="1.0" groups="sonata_api_read,sonata_api_write,sonata_search" /> </class> </serializer>

模型.用户.yml

Sonata\UserBundle\Model\User: exclusion_policy: ALL properties: token: expose: false

这两个文件似乎都不起作用。

我设法隐藏了FOSUserBundle的一些属性,但似乎我在隐藏与SonataUserBundle相关的属性时遇到了麻烦。我不确定它是否相关,但我想提一下我正在使用的也正在使用HWIOauthBundle

任何帮助将不胜感激。

0 投票
0 回答
112 浏览

symfony - Symfony,JMS 序列化包,在深度 oneToMany 关系上定义策略

我在 symfony 2 中使用 JSM 序列化包,这很好。交易是我使用了一些用户实体,我想在其上定义一些显示变量策略。对于所有项目,策略在某种程度上都是相同的,但是通过许多不同的请求搜索用户实体,例如有一些社区->用户,或者一些会话->用户,或者一些评论->所有者,如果我定义一些公开策略,我想我必须为所有包括实体执行它,传播抛出所有父实体。

例如,如果我有一个社区实体,其中包括社区-> 所有者和社区-> 会话-> 用户,我希望仅在用户级别执行该策略,而不将其添加到会话和社区。现在,如果我不序列化不显示任何内容...

各位有什么建议吗?