问题标签 [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 回答
942 浏览

php - Symfony2 CRUD,GET 返回 JSON,但 POST 创建 EMPTY 记录,PUT 什么也不做

我是 Symfony2 和许多捆绑软件的新手,但我正在开发一个原型 REST API,我使用了 FOSRestBundle 并且还使用了 Symfony2 生成的本机 CRUD。但是,我发现虽然 Symfony2 CRUD 代码返回正确的 JSON 格式响应,但 POST 给了我一个错误,我正在寻找有关如何解决问题的解释和教程。查看实体的 GET 和 POST 代码,在这种情况下假设地址:

假设我正在使用 AJAX 向 API 发送请求,这是我分别用于 GET 和 POST 的代码:

虽然 GET 返回正确,但 POST 返回以下错误: {"code":500,"message":"Warning: json_encode(): recursion detected in /var/www/projects/symfony/vendor/jms/serializer/src/ JMS/Serializer/JsonSerializationVisitor.php 第 29 行"}。我需要做什么来解决错误?我可以返回单个实体或所有实体,但 POST 只是将数据发送到创建实体的路径会给出错误。我已将我的 JMSSerializer 包从 0.12.* 更新为 dev-master,并检查以确保 AJAX 发送的数据中没有 NULL 值,但错误仍然存​​在。如何让我的 POST 控制器从 POST 中发送给它的有效 JSON 创建数据?

我也试过 PUT ,结果是一样的,它不更新资源,不应该只更新表中的记录吗?如果我需要提供更多信息来找出这个错误的来源,请告诉我!代码已在上面进行了编辑。

0 投票
2 回答
10846 浏览

php - 无法解码 JSON,语法错误 - 格式错误的 JSON

我将带有 JSON 数据的 AJAX POST 发送到 Symfony2 控制器。如果没有指定任何数据,控制器会创建一个空记录并返回成功(无错误)。但是,当我在 POST 中传递数据时,它会给我标题中显示的错误。这是我的 AJAX 代码:

要反序列化 JSON,这是我的控制器代码:

我正在使用 JMSSerializer 包。它无法解码 JSON 的原因是什么?我用 JSONlint 验证了我的 JSON,没关系。有任何想法吗?

** 编辑代码:添加实体类 **

0 投票
1 回答
1605 浏览

jmsserializerbundle - JMS Serializer 访问者继续默认反序列化

我为 JMS 序列化配置了一个访问者:

我只想在有参数 id 时反序列化 MyObject 的 id(所以声明的类型是 @JMS\Type("MyObject<'id'>")。

效果很好,但是,如果找不到参数,我想继续默认反序列化。

那可能吗 ?

谢谢

0 投票
2 回答
1617 浏览

symfony - 使用 JMSSerializerBundle 在 symfony2 中序列化之前的自动翻译

在从数据库(by findAll())获取实体之后以及将结果序列化为json.

我想在某些领域添加翻译。我知道我可以通过迭代每个实体并在控制器中应用我的逻辑来手动完成。但我需要一个更好的方法来做到这一点。

有没有建议让这个自动化?

0 投票
1 回答
166 浏览

xml - 使用 JMS 序列化对根下多次出现的相同标记进行反序列化 (XML)

我正在尝试使用 symfony2 中的 jmsserializerbundle 反序列化以下内容:

由于根节点本质上是Tag多次出现的父容器,反序列化似乎是不可能的。

如何才能做到这一点?

0 投票
1 回答
4563 浏览

php - 反序列化 XML 数组

我正在使用返回 XML 的 API。我可以使用 API 检索一个或多个帐户。我正在使用Jms 序列化器将这些数据反序列化为简单的模型类来保存数据。

一个帐户看起来像

我设法Account按如下方式配置我的对象,在反序列化时效果很好:

现在,当我获得多个帐户时,它看起来像这样:

我想将其反序列化为一组帐户。然而,目前,我发现唯一能做到这一点的方法是创建第二个名为的模型Accounts,如下所示:

反序列化时,我必须传递正确的上下文:

我在某个地方(在 SO 问题或 JMS Serializer Github 上)发现您也可以将“类型”作为上下文传递,$serializer->deserialize($rawXml, 'array<Recurly\Model\Account>', 'xml')但这只会导致一个空数组......任何人都知道是否可以在没有额外的情况下反序列化数组数据模型?

0 投票
2 回答
248 浏览

php - Symfony2 JMSSerializer 替换内联文本

我正在寻找一个简单而愚蠢的解决方案,以更改序列化字段的输出以替换几种模式(用于用户消息等)。

不幸的是,自定义反/序列化处理程序的使用破坏了我所有的策略。我被迫手动返回所有序列化数据。

模型类:

处理程序类:

0 投票
1 回答
643 浏览

json - 使用带有字段内容 HTML 标记的 JMSSerializer 序列化实体时 Json 无效

我安装了JMSSerializerbundlesymfony2 以获得我的 Doctrine 实体的 JSON 响应。

问题是当我有一个由 ckeditor 和内容HTML标签创建的字符串字段时,我得到了一个无效的 JSON 响应。

使用http://jsonlint.com/我得到了这个错误

第 154 行的解析错误:...
"course_content": "pmlllo</p>",
-----------------------^ 期待 'STRING', 'NUMBER'、'NULL'、'TRUE'、'FALSE'、'{'、'['

0 投票
1 回答
2895 浏览

jmsserializerbundle - 使用 JMSSerializer 格式化输入和输出字段(处理单个属性)

我想使用 JMSSerializer 处理序列化和反序列化的单个对象属性。假设我们有这个类:

我想返回 Task 的实例抛出了一个 REST API(使用 FOSRestBundle)。问题是我不想返回$status属性的原始值,而是“标签”值。

像这样配置我的序列化:

JMS 序列化程序考虑原始值 0 或 1,但我想在我的序列化对象中发送“待处理”或“结束”(使用getStatusLabel)。并在反序列化上做相反的工作(使用getStatusFromLabel)。

我想到了一个virtual_properties,但它只适用于序列化方向。

我尝试使用如下所示的自定义处理程序:

但这显然行不通!

如何在序列化和反序列化方向上调用我的自定义 getter?

0 投票
0 回答
2612 浏览

php - PHP,如何使用 JMS 序列化器(或 Symfony 序列化器)自定义日期数组的序列化

我需要序列化一个日期数组(就是这样,而不是包含日期数组的对象!)并且我希望能够控制它是如何完成的:

目前我得到类似的东西:

我想配置如下内容:不同的标签,不同的日期格式,摆脱 CDATA。得到这样的东西:


我正在考虑的一个选项是创建一个包含数组的 Dates 对象。然后我可以使用注释甚至自定义处理程序来为日期添加格式并描述 xml 标签。但我认为应该有一个更简单的方法。我真的不想创建一个包装器对象只是为了告诉一个日期数组应该如何序列化。不过,这不是一个糟糕的解决方案。但是,如果您想到更好的方法或回答上述问题,请告诉我。谢谢!