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

php - 使用 JMS 序列化器序列化二维数组

我有一个代表表格、行和单元格的数据结构。我需要将其序列化和反序列化为 JSON 和 XML。如何配置 JMS Serializer 来序列化这种对象,

进入这个 XML:

我已经尝试使用表示带有@Inline注释的行的对象,它不适用于 JSON 中的反序列化,行是空的。

0 投票
1 回答
5792 浏览

symfony - 在要序列化的实体上添加动态属性

我有这个 REST API。每当请求通过 id (/resource/{id}) 获取资源时,我想permissions在该对象上动态添加一个数组(实体本身没有该字段)。

我想出的是这个事件监听器。它检查控制器返回的结果:

问题是 JMS 序列化器在序列化时选择了这个动态属性。我尝试onPostSerialize在 JMS 序列化程序上创建事件订阅者,但是没有明确的方法来检查这是否是一个GET ONEGET COLLECTION请求。我不需要这种行为,GET COLLECTION它也会对集合序列化产生巨大的性能影响。此外,我不想创建任何具有permission属性的基实体类。

也许还有其他方法可以处理这种情况?

0 投票
2 回答
2629 浏览

php - 使用 JMS 序列化器进行 XML 反序列化

我正在尝试反序列化这个非常简单的 XML:

无论我尝试什么,我都无法将参数元素反序列化为arrayArrayCollection或任何类型的集合,因为数组总是以空结束。

两者最终都是空数组。所以我尝试为参数创建一个单独的对象

因此原始属性最终为

和班级

数组仍然是空的。但是,当我将类型更改为时,@Type("App\Blueprint\Model\Argument")我会得到正确的对象,尽管只有第一个。

当我尝试注册一个反序列化处理程序时,我无法修改它,因为它来了SimpleXmlElement,然后我会收到It is not yet possible to assign complex types to properties警告......

编辑

现在我设法以一种愚蠢的方式解决它:

如果有人有更好的解决方案,就把它留在这里。

0 投票
3 回答
758 浏览

symfony - FOSElastica 为什么我的结果没有被序列化?

我已经配置FOSElasticaBundle如下:

在我的测试中,我的数据库中有三个标签:tag1, tag2, new tag. 我的实体看起来像:

我正在搜索索引标签,如下所示:

而我的回应是:{"results":[{},{},{}]}

为什么$results不序列化?当我调试$results时,里面有对象。

0 投票
0 回答
1312 浏览

php - Symfony 2 - JMS 序列化器 - 添加 CSV 支持

我目前正在构建一个 API,并且要求可以选择以 CSV 格式获取数据。我希望它以与“xml”相同的方式工作。我的意思是我需要能够将“.csv”添加到 URL 的末尾,然后以 CSV 格式返回结果。

目前,如果我去/entity/all.xml序列化程序会将格式设置为 xml

我似乎无法找到 symfony 从 URL 中提取此内容的位置

所以我的问题是,如果我去/entity/all.csv如何从 url 中提取 csv 来设置格式?当前的序列化器是如何做到的?

我知道在此之后我将需要编写代码来实际序列化数据,但我正在努力弄清楚这部分过程将如何工作。

我会提前为提出一个非常模糊的问题而道歉,但我已经坚持了一段时间,没有搜索能够帮助我(没有帮助,我真的不知道如何在搜索中措辞)

我已经尝试单步执行代码以查看是否可以找到它的完成位置,但我似乎无法发现它,而且还有很多代码需要单步执行:/

0 投票
1 回答
1372 浏览

php - 如何在 Symfony3 中初始化 JMS 序列化器?

我正在尝试将JMSSerializerBundle用于 Symfony3(刚刚发布)。

这些是我在我的TestController.php

use JMS\Serializer\Serializer; use JMS\Serializer\SerializerBuilder; use JMS\Serializer\SerializationContext;

我试过$data = $this->get('jms_serializer')->serialize($data, 'json');where$data只是一个简单的对象,但得到以下错误:

Attempted to call an undefined method named "get" of class "AppBundle\Controller\TestController"

我还尝试了网站上的一个使用示例$serializer = $container->get('jms_serializer');,但是得到Notice: Undefined variable: container

我对 Symfony3 及其捆绑包还很陌生,似乎找不到任何关于 symfony 3 的 JMS Serializer 的文档

我可以像这样初始化它,这样$serializer = SerializerBuilder::create()->build();我就可以调用该serialize方法,但我想知道正确的“symfony 方式”。

如果有人能分享一些知识,那就太好了。谢谢!

0 投票
0 回答
116 浏览

jmsserializerbundle - JMSSerialerBundle 反序列化关系

我有相关的实体我想序列化实体及其所有关系,序列化工作正常(我认为)例如,我保存了这个 json。

后来我尝试反序列化,我只得到

指示关系的属性未映射。反序列化后我需要做什么才能正确映射对象。

我的实体代码:

编辑 经过一些测试,我发现这些关系 id 只是因为虚拟方法而设置的,没有它们它们不会被序列化,所以修改后的问题是如何正确序列化和反序列化具有关系的实体。

0 投票
2 回答
1453 浏览

symfony - Sysmfony REST API 实体的哈希 id

我正在使用带有 FOSRestBundle 和 JMSSerializerBundle 的 Symfony 2.7.9 构建多租户后端。

当通过 API 返回对象时,我想对返回对象的所有 id 进行哈希处理,因此不应该返回{ id: 5 }它,而是应该像{ id: 6uPQF1bVzPA }这样我可以在前端使用哈希后的 id(也许通过使用http://hashids .org )

我正在考虑配置 JMSSerializer 以使用自定义 getter 方法在我的实体上设置虚拟属性(例如“_id”),该方法计算 id 的哈希值,但我无权访问容器/任何服务。

我怎么能正确处理这个?

0 投票
0 回答
417 浏览

php - 使用 JMSSerializer 组在有或没有 inline 选项的情况下序列化对象

我想使用 PHP 库 JMSSerializer 为同一实体提供两种不同的表示形式,这可以通过其组功能轻松实现。

问题是我有一个表示,其中子对象的属性是内联的,一旦不是。如果它以某种方式工作,那就太好了:

我想以这种方式完成的是,SomeEntity可以使用group1withSomeOtherEntity内联进行序列化,并且group2ifSomeOtherEntity不应该内联,但这似乎不起作用(我猜 name 属性有点独特)。

一种解决方案是结合 a 引入另一种方法VirtualProperty,但随后我将不得不触及我希望避免的类,因为它是一个纯粹的序列化问题。

任何更好的想法如何解决这个问题?

0 投票
1 回答
24 浏览

php - 如何处理订阅者不使用 JMS/Serializer 库对特定对象执行操作的极端情况?

我正在使用JMS/Serialzier 库

我已经设置了一个事件订阅者,它监听Events::PRE_SERIALIZE然后我将Price具有该属性currency的类的所有对象实例转换amount为不同的货币。

然而现在,在我的应用程序中,我有一个极端情况,即属于一个容器对象的一个​​价格EdgeCase根本不需要转换:

但必须保持原来的状态。然而,我似乎无法区分我的对象的来源。

我希望能够配置Price应该转换哪些对象以及何时转换。