问题标签 [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.
php - 使用 JMS 序列化器序列化二维数组
我有一个代表表格、行和单元格的数据结构。我需要将其序列化和反序列化为 JSON 和 XML。如何配置 JMS Serializer 来序列化这种对象,
进入这个 XML:
我已经尝试使用表示带有@Inline
注释的行的对象,它不适用于 JSON 中的反序列化,行是空的。
symfony - 在要序列化的实体上添加动态属性
我有这个 REST API。每当请求通过 id (/resource/{id}) 获取资源时,我想permissions
在该对象上动态添加一个数组(实体本身没有该字段)。
我想出的是这个事件监听器。它检查控制器返回的结果:
问题是 JMS 序列化器在序列化时选择了这个动态属性。我尝试onPostSerialize
在 JMS 序列化程序上创建事件订阅者,但是没有明确的方法来检查这是否是一个GET ONE
或GET COLLECTION
请求。我不需要这种行为,GET COLLECTION
它也会对集合序列化产生巨大的性能影响。此外,我不想创建任何具有permission
属性的基实体类。
也许还有其他方法可以处理这种情况?
php - 使用 JMS 序列化器进行 XML 反序列化
我正在尝试反序列化这个非常简单的 XML:
无论我尝试什么,我都无法将参数元素反序列化为array
或ArrayCollection
或任何类型的集合,因为数组总是以空结束。
两者最终都是空数组。所以我尝试为参数创建一个单独的对象
因此原始属性最终为
和班级
数组仍然是空的。但是,当我将类型更改为时,@Type("App\Blueprint\Model\Argument")
我会得到正确的对象,尽管只有第一个。
当我尝试注册一个反序列化处理程序时,我无法修改它,因为它来了SimpleXmlElement
,然后我会收到It is not yet possible to assign complex types to properties
警告......
编辑
现在我设法以一种愚蠢的方式解决它:
如果有人有更好的解决方案,就把它留在这里。
symfony - FOSElastica 为什么我的结果没有被序列化?
我已经配置FOSElasticaBundle
如下:
在我的测试中,我的数据库中有三个标签:tag1
, tag2
, new tag
. 我的实体看起来像:
我正在搜索索引标签,如下所示:
而我的回应是:{"results":[{},{},{}]}
为什么$results
不序列化?当我调试$results
时,里面有对象。
php - Symfony 2 - JMS 序列化器 - 添加 CSV 支持
我目前正在构建一个 API,并且要求可以选择以 CSV 格式获取数据。我希望它以与“xml”相同的方式工作。我的意思是我需要能够将“.csv”添加到 URL 的末尾,然后以 CSV 格式返回结果。
目前,如果我去/entity/all.xml
序列化程序会将格式设置为 xml
我似乎无法找到 symfony 从 URL 中提取此内容的位置
所以我的问题是,如果我去/entity/all.csv
如何从 url 中提取 csv 来设置格式?当前的序列化器是如何做到的?
我知道在此之后我将需要编写代码来实际序列化数据,但我正在努力弄清楚这部分过程将如何工作。
我会提前为提出一个非常模糊的问题而道歉,但我已经坚持了一段时间,没有搜索能够帮助我(没有帮助,我真的不知道如何在搜索中措辞)
我已经尝试单步执行代码以查看是否可以找到它的完成位置,但我似乎无法发现它,而且还有很多代码需要单步执行:/
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 方式”。
如果有人能分享一些知识,那就太好了。谢谢!
jmsserializerbundle - JMSSerialerBundle 反序列化关系
我有相关的实体我想序列化实体及其所有关系,序列化工作正常(我认为)例如,我保存了这个 json。
后来我尝试反序列化,我只得到
指示关系的属性未映射。反序列化后我需要做什么才能正确映射对象。
我的实体代码:
编辑 经过一些测试,我发现这些关系 id 只是因为虚拟方法而设置的,没有它们它们不会被序列化,所以修改后的问题是如何正确序列化和反序列化具有关系的实体。
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 的哈希值,但我无权访问容器/任何服务。
我怎么能正确处理这个?
php - 使用 JMSSerializer 组在有或没有 inline 选项的情况下序列化对象
我想使用 PHP 库 JMSSerializer 为同一实体提供两种不同的表示形式,这可以通过其组功能轻松实现。
问题是我有一个表示,其中子对象的属性是内联的,一旦不是。如果它以某种方式工作,那就太好了:
我想以这种方式完成的是,SomeEntity
可以使用group1
withSomeOtherEntity
内联进行序列化,并且group2
ifSomeOtherEntity
不应该内联,但这似乎不起作用(我猜 name 属性有点独特)。
一种解决方案是结合 a 引入另一种方法VirtualProperty
,但随后我将不得不触及我希望避免的类,因为它是一个纯粹的序列化问题。
任何更好的想法如何解决这个问题?
php - 如何处理订阅者不使用 JMS/Serializer 库对特定对象执行操作的极端情况?
我正在使用JMS/Serialzier 库。
我已经设置了一个事件订阅者,它监听Events::PRE_SERIALIZE
然后我将Price
具有该属性currency
的类的所有对象实例转换amount
为不同的货币。
然而现在,在我的应用程序中,我有一个极端情况,即属于一个容器对象的一个价格EdgeCase
根本不需要转换:
但必须保持原来的状态。然而,我似乎无法区分我的对象的来源。
我希望能够配置Price
应该转换哪些对象以及何时转换。